home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1999 November / SOTMC_Nov1999-Ultimate.iso / mac / REALbasic ƒ / Examples / Applications / 3DViewer ƒ / 3DViewer.µ next >
Unknown  |  1999-04-28  |  83.1 KB  |  [TgPj/RBv2]

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was not able to be converted.
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
100% file data default


id metadata
keyvalue
macFileType[TgPj]
macFileCreator[RBv2]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 0b a1 01 00 00 ae bb f7 | 0e 41 41 41 41 41 41 41 |........|.AAAAAAA|
|00000010| 41 41 41 41 41 41 41 41 | 01 04 3f 3f 3f 3f 41 00 |AAAAAAAA|..????A.|
|00000020| 01 00 01 00 08 33 44 56 | 69 65 77 65 72 80 80 80 |.....3DV|iewer...|
|00000030| 04 80 80 80 02 01 00 00 | 00 00 00 00 00 06 69 63 |........|......ic|
|00000040| 73 23 80 01 01 80 06 60 | 08 10 08 90 08 10 0c b0 |s#.....`|........|
|00000050| 33 4c 20 84 22 14 60 86 | a2 17 99 9f 66 7e 18 78 |3L .".`.|....f~.x|
|00000060| 06 e0 01 80 01 80 07 e0 | 0f f0 0f f0 0f f0 0f f0 |........|........|
|00000070| 3f fc 3f fc 3f fc 7f fe | ff ff ff ff 7f fe 1f f8 |?.?.?...|........|
|00000080| 07 e0 01 80 49 43 4e 23 | 80 04 00 01 80 00 00 06 |....ICN#|........|
|00000090| 60 00 00 18 18 00 00 60 | 06 00 00 48 0a 00 00 42 |`......`|...H...B|
|000000a0| 22 00 00 40 8a 00 00 40 | 22 00 00 40 8a 00 00 40 |"..@...@|"..@...@|
|000000b0| 22 00 00 40 8a 00 00 60 | 26 00 01 98 99 80 06 06 |"..@...`|&.......|
|000000c0| 60 60 18 01 80 18 12 02 | 20 28 10 88 88 88 10 22 |``......| (....."|
|000000d0| 02 28 30 08 80 8c 70 22 | 02 2a 90 08 80 8d b0 22 |.(0...p"|.*....."|
|000000e0| 02 2b 98 09 80 99 a6 26 | 62 67 69 98 19 9e 1a 60 |.+.....&|bgi....`|
|000000f0| 06 78 06 80 01 e0 01 a0 | 07 80 00 68 1e 00 00 1a |.x......|...h....|
|00000100| 78 00 00 06 e0 00 00 01 | 80 00 00 01 80 00 00 07 |x.......|........|
|00000110| e0 00 00 1f f8 00 00 7f | fe 00 00 7f fe 00 00 7f |........|........|
|00000120| fe 00 00 7f fe 00 00 7f | fe 00 00 7f fe 00 00 7f |........|........|
|00000130| fe 00 00 7f fe 00 00 7f | fe 00 01 ff ff 80 07 ff |........|........|
|00000140| ff e0 1f ff ff f8 1f ff | ff f8 1f ff ff f8 1f ff |........|........|
|00000150| ff f8 3f ff ff fc 7f ff | ff fe ff ff ff ff ff ff |..?.....|........|
|00000160| ff ff ff ff ff ff ff ff | ff ff 7f ff ff fe 1f ff |........|........|
|00000170| ff f8 07 ff ff e0 01 ff | ff 80 00 7f fe 00 00 1f |........|........|
|00000180| f8 00 00 07 e0 00 00 01 | 80 00 69 63 73 34 80 02 |........|..ics4..|
|00000190| 00 00 00 0f f0 00 00 00 | 00 00 0f f8 8f f0 00 00 |........|........|
|000001a0| 00 00 f8 88 88 9f 00 00 | 00 00 f8 88 99 9f 00 00 |........|........|
|000001b0| 00 00 f8 88 99 9f 00 00 | 00 00 f8 88 99 9f 00 00 |........|........|
|000001c0| 00 ff cc 88 99 11 ff 00 | 00 fc cc cc 11 11 1f 00 |........|........|
|000001d0| 00 fc c3 73 21 22 2f 00 | 0f fc c7 37 12 12 2f f0 |...s!"/.|...7../.|
|000001e0| fc fc c3 73 21 22 2f df | f0 cf f7 3f f2 1f fd df |...s!"/.|...?....|
|000001f0| 0f f0 cf fc cf fd df f0 | 00 0f f0 cc cd df f0 00 |........|........|
|00000200| 00 00 0f f0 df f0 00 00 | 00 00 00 0f f0 00 00 00 |........|........|
|00000210| 69 63 73 38 80 04 00 00 | 00 00 00 00 00 ff ff 00 |ics8....|........|
|00000220| 00 00 00 00 00 00 00 00 | 00 00 00 ff ff e1 e1 ff |........|........|
|00000230| ff 00 00 00 00 00 00 00 | 00 00 ff e3 e1 e1 e1 e1 |........|........|
|00000240| e5 ff 00 00 00 00 00 00 | 00 00 ff e3 e3 e3 e5 e5 |........|........|
|00000250| e5 ff 00 00 00 00 00 00 | 00 00 ff e3 e3 e3 e5 e5 |........|........|
|00000260| e5 ff 00 00 00 00 00 00 | 00 00 ff e3 e3 e3 e5 e5 |........|........|
|00000270| e5 ff 00 00 00 00 00 00 | ff ff 2a 2a e3 e3 e5 e5 |........|..**....|
|00000280| 0b 0b ff ff 00 00 00 00 | ff 2a 2a 2a 2a 2a 0b 0b |........|.*****..|
|00000290| 0b 0b 0b ff 00 00 00 00 | ff 54 54 7f 7f 7f 11 11 |........|.TT.....|
|000002a0| 11 17 17 ff 00 00 00 ff | ff 54 54 7f 7f 7f 11 11 |........|.TT.....|
|000002b0| 11 17 17 ff ff 00 ff f6 | ff 54 54 7f 7f 7f 11 11 |........|.TT.....|
|000002c0| 11 17 17 ff f9 ff ff f6 | f6 ff ff 7f 7f ff ff 11 |........|........|
|000002d0| 11 ff ff f9 f9 ff 00 ff | ff f6 f6 ff ff f7 f7 ff |........|........|
|000002e0| ff f9 f9 ff ff 00 00 00 | 00 ff ff f6 f6 f7 f7 f9 |........|........|
|000002f0| f9 ff ff 00 00 00 00 00 | 00 00 00 ff ff f6 f9 ff |........|........|
|00000300| ff 00 00 00 00 00 00 00 | 00 00 00 00 00 ff ff 00 |........|........|
|00000310| 00 00 00 00 00 00 69 63 | 6c 34 80 08 00 00 00 00 |......ic|l4......|
|00000320| 00 00 00 0f f0 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000330| 00 00 0f f8 8f f0 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000340| 00 0f f8 88 88 8f f0 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000350| 0f f8 88 88 88 88 8f f0 | 00 00 00 00 00 00 00 00 |........|........|
|00000360| 0f 88 08 88 88 88 89 f0 | 00 00 00 00 00 00 00 00 |........|........|
|00000370| 0f 88 88 08 88 89 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|00000380| 0f 88 88 88 09 99 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|00000390| 0f 88 88 88 99 99 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|000003a0| 0f 88 88 88 89 99 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|000003b0| 0f 88 88 88 99 99 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|000003c0| 0f 88 88 88 89 99 99 f0 | 00 00 00 00 00 00 00 00 |........|........|
|000003d0| 0f 88 88 88 99 99 99 f0 | 00 00 00 00 00 00 00 0f |........|........|
|000003e0| fc c8 88 88 89 99 91 1f | f0 00 00 00 00 00 0f fc |........|........|
|000003f0| cc cc c8 88 99 91 11 11 | 1f f0 00 00 00 0f fc cc |........|........|
|00000400| cc cc cc cc 71 11 11 11 | 11 1f f0 00 00 0f cc 0c |....q...|........|
|00000410| cc cc cc 37 22 01 11 11 | 11 12 f0 00 00 0f cc cc |...7"...|........|
|00000420| 0c cc 73 73 71 21 01 11 | 12 22 f0 00 00 0f cc cc |..ssq!..|."......|
|00000430| cc 07 37 37 22 12 12 02 | 22 22 f0 00 00 ff cc cc |..77"...|""......|
|00000440| cc 73 73 73 71 21 21 22 | 22 22 ff 00 0f 0f cc cc |.sssq!!"|""......|
|00000450| cc c7 37 37 22 12 12 12 | 22 22 fd f0 f0 cf cc cc |..77"...|""......|
|00000460| cc 73 73 73 71 21 21 22 | 22 22 fc df fc cf cc cc |.sssq!!"|""......|
|00000470| cc c7 37 37 22 12 12 12 | 22 22 fc cf fc 0f fc cc |..77"...|""......|
|00000480| cc 73 73 7f f1 21 21 22 | 22 2f fc df fc cc 0f fc |.ss..!!"|"/......|
|00000490| cc c7 3f fd df f2 12 12 | 2f fc dd df 0f fc cc 0f |..?.....|/.......|
|000004a0| fc 7f fd dd dc cf f1 2f | fc dd df f0 00 0f fc cc |......./|........|
|000004b0| 0f fd dd cc cc cc cf fc | dd df f0 00 00 00 0f fc |........|........|
|000004c0| cc 00 cc cc cc cc cc dd | df f0 00 00 00 00 00 0f |........|........|
|000004d0| fc cc 00 cc cc cc dd df | f0 00 00 00 00 00 00 00 |........|........|
|000004e0| 0f fc cc 00 cc dd df f0 | 00 00 00 00 00 00 00 00 |........|........|
|000004f0| 00 0f fc cc dd df f0 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000500| 00 00 0f fc df f0 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000510| 00 00 00 0f f0 00 00 00 | 00 00 00 00 69 63 6c 38 |........|....icl8|
|00000520| 80 10 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000530| 00 ff ff 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000540| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 ff |........|........|
|00000550| ff e1 e1 ff ff 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 ff ff e1 |........|........|
|00000570| e1 e1 e1 e1 e1 ff ff 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000580| 00 00 00 00 00 00 00 00 | 00 00 00 ff ff e1 e1 e1 |........|........|
|00000590| e1 e1 e1 e1 e1 e1 e1 ff | ff 00 00 00 00 00 00 00 |........|........|
|000005a0| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 00 e1 |........|........|
|000005b0| e1 e1 e1 e1 e1 e1 e3 e5 | ff 00 00 00 00 00 00 00 |........|........|
|000005c0| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|000005d0| 00 e1 e1 e1 e3 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|000005e0| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|000005f0| e3 e3 00 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|00000600| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|00000610| e3 e3 e5 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|00000620| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|00000630| e3 e3 e3 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|00000640| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|00000650| e3 e3 e5 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|00000660| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|00000670| e3 e3 e3 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|00000680| 00 00 00 00 00 00 00 00 | 00 00 00 ff e3 e3 e3 e3 |........|........|
|00000690| e3 e3 e5 e5 e5 e5 e5 e5 | ff 00 00 00 00 00 00 00 |........|........|
|000006a0| 00 00 00 00 00 00 00 00 | 00 ff ff 2a 2a e3 e3 e3 |........|...**...|
|000006b0| e3 e3 e3 e5 e5 e5 e5 0b | 0b ff ff 00 00 00 00 00 |........|........|
|000006c0| 00 00 00 00 00 00 00 ff | ff 2a 2a 2a 2a 2a 2a e3 |........|.******.|
|000006d0| e3 e3 e5 e5 e5 0b 0b 0b | 0b 0b 0b ff ff 00 00 00 |........|........|
|000006e0| 00 00 00 00 00 ff ff 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.......*|********|
|000006f0| 2a 2a 54 0b 0b 0b 0b 0b | 0b 0b 0b 0b 0b ff ff 00 |**T.....|........|
|00000700| 00 00 00 00 00 ff 54 54 | 00 2a 2a 2a 2a 2a 2a 2a |......TT|.*******|
|00000710| 54 7f 11 11 00 0b 0b 0b | 0b 0b 0b 0b 11 17 ff 00 |T.......|........|
|00000720| 00 00 00 00 00 ff 54 54 | 54 54 00 2a 2a 2a 54 7f |......TT|TT.***T.|
|00000730| 7f 7f 7f 11 11 11 00 0b | 0b 0b 11 17 17 17 ff 00 |........|........|
|00000740| 00 00 00 00 00 ff 54 54 | 54 54 54 54 00 7f 7f 7f |......TT|TTTT....|
|00000750| 7f 7f 11 11 11 11 11 11 | 00 17 17 17 17 17 ff 00 |........|........|
|00000760| 00 00 00 00 ff ff 54 54 | 54 54 54 54 7f 7f 7f 7f |......TT|TTTT....|
|00000770| 7f 7f 7f 11 11 11 11 11 | 17 17 17 17 17 17 ff ff |........|........|
|00000780| 00 00 00 ff 00 ff 54 54 | 54 54 54 54 54 7f 7f 7f |......TT|TTTTT...|
|00000790| 7f 7f 11 11 11 11 11 11 | 11 17 17 17 17 17 ff f9 |........|........|
|000007a0| ff 00 ff 00 f7 ff 54 54 | 54 54 54 54 7f 7f 7f 7f |......TT|TTTT....|
|000007b0| 7f 7f 7f 11 11 11 11 11 | 17 17 17 17 17 17 ff f7 |........|........|
|000007c0| f9 ff ff f7 f7 ff 54 54 | 54 54 54 54 54 7f 7f 7f |......TT|TTTTT...|
|000007d0| 7f 7f 11 11 11 11 11 11 | 11 17 17 17 17 17 ff f7 |........|........|
|000007e0| f7 ff ff f7 00 ff ff 54 | 54 54 54 54 7f 7f 7f 7f |.......T|TTTT....|
|000007f0| 7f ff ff 11 11 11 11 11 | 17 17 17 17 17 ff ff f7 |........|........|
|00000800| f9 ff ff f7 f7 f7 00 ff | ff 54 54 54 54 7f 7f ff |........|.TTTT...|
|00000810| ff f9 f9 ff ff 11 11 11 | 11 17 17 ff ff f7 f9 f9 |........|........|
|00000820| f9 ff 00 ff ff f7 f7 f7 | 00 ff ff 54 7f ff ff f9 |........|...T....|
|00000830| f9 f9 f9 f7 f6 ff ff 11 | 17 ff ff f7 f9 f9 f9 ff |........|........|
|00000840| ff 00 00 00 00 ff ff f7 | f7 f7 00 ff ff f9 f9 f9 |........|........|
|00000850| f7 f6 f6 f6 f6 f6 f6 ff | ff f7 f9 f9 f9 ff ff 00 |........|........|
|00000860| 00 00 00 00 00 00 00 ff | ff f7 f7 f7 00 00 f6 f6 |........|........|
|00000870| f6 f6 f6 f6 f6 f6 f7 f7 | f9 f9 f9 ff ff 00 00 00 |........|........|
|00000880| 00 00 00 00 00 00 00 00 | 00 ff ff f7 f7 f7 00 00 |........|........|
|00000890| f6 f6 f6 f6 f7 f7 f9 f9 | f9 ff ff 00 00 00 00 00 |........|........|
|000008a0| 00 00 00 00 00 00 00 00 | 00 00 00 ff ff f7 f7 f7 |........|........|
|000008b0| 00 00 f7 f7 f9 f9 f9 ff | ff 00 00 00 00 00 00 00 |........|........|
|000008c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 ff ff f7 |........|........|
|000008d0| f7 f7 f9 f9 f9 ff ff 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 ff |........|........|
|000008f0| ff f7 f9 ff ff 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000900| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000910| 00 ff ff 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000920| 00 00 01 0f 74 65 78 74 | 2f 78 2d 6f 6f 67 6c 2d |....text|/x-oogl-|
|00000930| 6f 66 66 04 3f 3f 3f 3f | 04 54 45 58 54 03 6f 66 |off.????|.TEXT.of|
|00000940| 66 01 04 69 63 73 23 80 | 01 00 00 00 00 00 00 00 |f..ics#.|........|
|00000950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000960| 00 00 00 00 00 00 00 00 | 00 00 00 11 20 ff ff ff |........|.... ...|
|00000970| ff ff ff ff ff ff ff ff | ff ff ff ff ff ff ff ff |........|........|
|00000980| ff ff ff ff ff 00 00 00 | 00 49 43 4e 23 80 04 7f |........|.ICN#...|
|00000990| ff f0 00 40 00 18 00 40 | 00 14 00 40 00 12 00 40 |...@...@|...@...@|
|000009a0| 00 11 00 40 00 10 80 40 | 00 1f c0 40 00 00 40 40 |...@...@|...@..@@|
|000009b0| 00 00 40 40 00 00 40 40 | 00 00 40 40 00 00 40 40 |..@@..@@|..@@..@@|
|000009c0| 00 00 40 40 00 00 40 40 | 00 00 40 40 00 00 40 40 |..@@..@@|..@@..@@|
|000009d0| 00 00 40 40 00 00 40 40 | 00 00 40 40 00 00 40 40 |..@@..@@|..@@..@@|
|000009e0| 00 00 40 40 00 00 40 40 | 00 00 40 40 00 00 40 40 |..@@..@@|..@@..@@|
|000009f0| 00 00 40 40 00 00 40 40 | 00 00 60 40 00 00 78 40 |..@@..@@|..`@..x@|
|00000a00| 00 00 7e 40 00 00 7e 40 | 00 00 78 7f ff ff e0 7f |..~@..~@|..x.....|
|00000a10| ff f0 00 7f ff f8 00 7f | ff fc 00 7f ff fe 00 7f |........|........|
|00000a20| ff ff 00 7f ff ff 80 7f | ff ff c0 7f ff ff c0 7f |........|........|
|00000a30| ff ff c0 7f ff ff c0 7f | ff ff c0 7f ff ff c0 7f |........|........|
|00000a40| ff ff c0 7f ff ff c0 7f | ff ff c0 7f ff ff c0 7f |........|........|
|00000a50| ff ff c0 7f ff ff c0 7f | ff ff c0 7f ff ff c0 7f |........|........|
|00000a60| ff ff c0 7f ff ff c0 7f | ff ff c0 7f ff ff c0 7f |........|........|
|00000a70| ff ff c0 7f ff ff c0 7f | ff ff e0 7f ff ff f8 7f |........|........|
|00000a80| ff ff fe 7f ff ff fe 7f | ff ff f8 7f ff ff e0 69 |........|.......i|
|00000a90| 63 73 38 80 04 00 00 00 | 00 00 00 00 00 00 00 00 |cs8.....|........|
|00000aa0| 00 00 00 00 00 00 00 00 | ff 00 00 00 ff 00 00 ff |........|........|
|00000ab0| 00 00 00 00 00 ff ff 00 | ff 00 00 ff 00 ff 00 00 |........|........|
|00000ac0| 00 ff ff ff ff ff 00 00 | ff ff 00 ff 00 ff 00 ff |........|........|
|00000ad0| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000ae0| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000af0| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b00| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b10| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b20| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b30| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b40| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b50| 00 00 00 00 ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b60| 00 00 00 00 ff ff ff ff | ff ff ff ff ff ff ff ff |........|........|
|00000b70| ff ff ff ff ff 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000b90| 00 00 00 00 00 69 63 6c | 38 80 10 00 ff ff ff ff |.....icl|8.......|
|00000ba0| ff ff ff ff ff ff ff ff | ff ff ff ff ff ff ff 00 |........|........|
|00000bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000bc0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff ff |........|........|
|00000bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000be0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff f8 |........|........|
|00000bf0| ff 00 00 00 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000c00| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff 00 |........|........|
|00000c10| f8 ff 00 00 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000c20| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff 00 |........|........|
|00000c30| 00 f8 ff 00 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000c40| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff f5 |........|........|
|00000c50| f6 f6 f8 ff 00 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000c60| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 ff ff |........|........|
|00000c70| ff ff ff ff ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000c80| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f9 |........|........|
|00000c90| f9 f9 f9 f9 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000ca0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f7 |........|........|
|00000cb0| f7 f7 f7 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000cc0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000cd0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000ce0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000cf0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000d00| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000d10| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000d20| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000d30| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000d40| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000d50| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000d60| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000d70| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000d80| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000d90| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000da0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000db0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000dc0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000dd0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000de0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000df0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000e00| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000e10| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000e20| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000e30| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000e40| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000e50| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000e60| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000e70| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000e80| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000e90| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000ea0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000eb0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000ec0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000ed0| f5 f5 f5 f7 ff 00 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000ee0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000ef0| f5 f5 f5 f7 ff fc 00 00 | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000f00| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000f10| f5 f5 f5 f7 ff fc fc fc | 00 00 00 00 ff f5 f5 f5 |........|........|
|00000f20| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000f30| f5 f5 f5 f7 ff fc fc fc | fc fc 00 00 ff f5 f5 f5 |........|........|
|00000f40| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000f50| f5 f5 f5 f7 ff fc fc fc | fc fc 00 00 ff f5 f5 f5 |........|........|
|00000f60| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00000f70| f5 f5 f5 f7 ff fc fc fc | 00 00 00 00 ff ff ff ff |........|........|
|00000f80| ff ff ff ff ff ff ff ff | ff ff ff ff ff ff ff ff |........|........|
|00000f90| ff ff ff ff ff fc 00 00 | 00 00 00 02 41 04 4d 65 |........|....A.Me|
|00000fa0| 6e 75 04 4d 65 6e 75 05 | b7 01 a6 01 a3 06 ae 04 |nu.Menu.|........|
|00000fb0| 06 01 00 00 80 80 80 80 | 10 00 00 00 00 00 07 00 |........|........|
|00000fc0| 00 88 01 08 4d 65 6e 75 | 49 74 65 6d 00 00 00 00 |....Menu|Item....|
|00000fd0| 00 00 00 02 00 0e 41 62 | 6f 75 74 20 33 44 56 69 |......Ab|out 3DVi|
|00000fe0| 65 77 65 72 0d 41 70 70 | 6c 65 41 62 6f 75 74 42 |ewer.App|leAboutB|
|00000ff0| 6f 78 80 80 80 80 10 00 | 00 00 00 00 07 00 00 88 |ox......|........|
|00001000| 01 08 4d 65 6e 75 49 74 | 65 6d 00 00 00 00 00 00 |..MenuIt|em......|
|00001010| 00 00 02 00 00 80 80 80 | 80 10 00 00 00 00 00 07 |........|........|
|00001020| 00 00 88 01 08 4d 65 6e | 75 49 74 65 6d 00 00 00 |.....Men|uItem...|
|00001030| 00 00 00 00 00 00 04 46 | 69 6c 65 00 80 80 80 80 |.......F|ile.....|
|00001040| 10 00 00 00 00 00 07 00 | 00 88 01 08 4d 65 6e 75 |........|....Menu|
|00001050| 49 74 65 6d 00 00 00 00 | 00 00 00 07 00 05 4f 70 |Item....|......Op|
|00001060| 65 6e c9 08 46 69 6c 65 | 4f 70 65 6e 80 80 80 80 |en..File|Open....|
|00001070| 10 01 4f 00 00 00 00 07 | 00 00 88 01 08 4d 65 6e |..O.....|.....Men|
|00001080| 75 49 74 65 6d 00 00 00 | 00 00 00 00 00 00 05 43 |uItem...|.......C|
|00001090| 6c 6f 73 65 09 46 69 6c | 65 43 6c 6f 73 65 80 80 |lose.Fil|eClose..|
|000010a0| 80 80 10 01 57 00 00 00 | 00 07 00 00 88 01 08 4d |....W...|.......M|
|000010b0| 65 6e 75 49 74 65 6d 00 | 00 00 00 00 00 00 00 00 |enuItem.|........|
|000010c0| 04 53 61 76 65 08 46 69 | 6c 65 53 61 76 65 80 80 |.Save.Fi|leSave..|
|000010d0| 80 80 10 01 53 00 00 00 | 00 07 00 00 88 01 08 4d |....S...|.......M|
|000010e0| 65 6e 75 49 74 65 6d 00 | 00 00 00 00 00 00 00 00 |enuItem.|........|
|000010f0| 08 53 61 76 65 20 41 73 | c9 0b 46 69 6c 65 53 61 |.Save As|..FileSa|
|00001100| 76 65 41 73 c9 80 80 80 | 80 10 00 00 00 00 00 07 |veAs....|........|
|00001110| 00 00 88 01 08 4d 65 6e | 75 49 74 65 6d 00 00 00 |.....Men|uItem...|
|00001120| 00 00 00 00 00 00 01 2d | 00 80 80 80 80 10 00 00 |.......-|........|
|00001130| 00 00 00 07 00 00 88 01 | 08 4d 65 6e 75 49 74 65 |........|.MenuIte|
|00001140| 6d 00 00 00 00 00 00 00 | 00 00 04 51 75 69 74 08 |m.......|...Quit.|
|00001150| 46 69 6c 65 51 75 69 74 | 80 80 80 80 10 01 51 00 |FileQuit|......Q.|
|00001160| 00 00 00 07 00 00 88 01 | 0c 51 75 69 74 4d 65 6e |........|.QuitMen|
|00001170| 75 49 74 65 6d 00 00 00 | 00 00 00 00 00 02 00 00 |uItem...|........|
|00001180| 80 80 80 80 10 00 00 00 | 00 00 07 00 00 88 01 08 |........|........|
|00001190| 4d 65 6e 75 49 74 65 6d | 00 00 00 00 00 00 00 00 |MenuItem|........|
|000011a0| 00 04 45 64 69 74 00 80 | 80 80 80 10 00 00 00 00 |..Edit..|........|
|000011b0| 00 07 00 00 88 01 08 4d | 65 6e 75 49 74 65 6d 00 |.......M|enuItem.|
|000011c0| 00 00 00 00 00 00 09 00 | 04 55 6e 64 6f 08 45 64 |........|.Undo.Ed|
|000011d0| 69 74 55 6e 64 6f 80 80 | 80 80 10 01 5a 00 00 00 |itUndo..|....Z...|
|000011e0| 00 07 00 00 88 01 08 4d | 65 6e 75 49 74 65 6d 00 |.......M|enuItem.|
|000011f0| 00 00 00 00 00 00 00 00 | 01 2d 00 80 80 80 80 10 |........|.-......|
|00001200| 00 00 00 00 00 07 00 00 | 88 01 08 4d 65 6e 75 49 |........|...MenuI|
|00001210| 74 65 6d 00 00 00 00 00 | 00 00 00 00 03 43 75 74 |tem.....|.....Cut|
|00001220| 07 45 64 69 74 43 75 74 | 80 80 80 80 10 01 58 00 |.EditCut|......X.|
|00001230| 00 00 00 07 00 00 88 01 | 08 4d 65 6e 75 49 74 65 |........|.MenuIte|
|00001240| 6d 00 00 00 00 00 00 00 | 00 00 04 43 6f 70 79 08 |m.......|...Copy.|
|00001250| 45 64 69 74 43 6f 70 79 | 80 80 80 80 10 01 43 00 |EditCopy|......C.|
|00001260| 00 00 00 07 00 00 88 01 | 08 4d 65 6e 75 49 74 65 |........|.MenuIte|
|00001270| 6d 00 00 00 00 00 00 00 | 00 00 05 50 61 73 74 65 |m.......|...Paste|
|00001280| 09 45 64 69 74 50 61 73 | 74 65 80 80 80 80 10 01 |.EditPas|te......|
|00001290| 56 00 00 00 00 07 00 00 | 88 01 08 4d 65 6e 75 49 |V.......|...MenuI|
|000012a0| 74 65 6d 00 00 00 00 00 | 00 00 00 00 05 43 6c 65 |tem.....|.....Cle|
|000012b0| 61 72 09 45 64 69 74 43 | 6c 65 61 72 80 80 80 80 |ar.EditC|lear....|
|000012c0| 10 00 00 00 00 00 07 00 | 00 88 01 08 4d 65 6e 75 |........|....Menu|
|000012d0| 49 74 65 6d 00 00 00 00 | 00 00 00 00 00 01 2d 00 |Item....|......-.|
|000012e0| 80 80 80 80 10 00 00 00 | 00 00 07 00 00 88 01 08 |........|........|
|000012f0| 4d 65 6e 75 49 74 65 6d | 00 00 00 00 00 00 00 00 |MenuItem|........|
|00001300| 00 0c 50 72 65 66 65 72 | 65 6e 63 65 73 c9 0f 45 |..Prefer|ences..E|
|00001310| 64 69 74 50 72 65 66 65 | 72 65 6e 63 65 73 80 80 |ditPrefe|rences..|
|00001320| 80 80 10 00 00 00 00 00 | 07 00 00 88 01 08 4d 65 |........|......Me|
|00001330| 6e 75 49 74 65 6d 00 00 | 00 00 00 00 00 00 02 00 |nuItem..|........|
|00001340| 00 80 80 80 80 10 00 00 | 00 00 00 07 00 00 88 01 |........|........|
|00001350| 08 4d 65 6e 75 49 74 65 | 6d 00 00 00 00 00 00 00 |.MenuIte|m.......|
|00001360| 00 00 04 48 65 6c 70 00 | 80 80 80 80 10 00 00 00 |...Help.|........|
|00001370| 00 00 07 00 00 88 01 08 | 4d 65 6e 75 49 74 65 6d |........|MenuItem|
|00001380| 00 00 00 00 00 00 00 01 | 02 00 00 80 80 80 80 10 |........|........|
|00001390| 00 00 00 00 00 07 00 00 | 88 01 08 4d 65 6e 75 49 |........|...MenuI|
|000013a0| 74 65 6d 00 00 00 00 00 | 00 00 00 00 05 4d 6f 64 |tem.....|.....Mod|
|000013b0| 65 6c 05 4d 6f 64 65 6c | 80 80 80 80 10 00 00 00 |el.Model|........|
|000013c0| 00 00 07 00 00 88 01 08 | 4d 65 6e 75 49 74 65 6d |........|MenuItem|
|000013d0| 00 00 00 00 00 00 00 06 | 00 05 45 64 67 65 73 0a |........|..Edges.|
|000013e0| 4d 6f 64 65 6c 45 64 67 | 65 73 80 80 80 80 10 00 |ModelEdg|es......|
|000013f0| 00 00 00 00 07 00 00 88 | 01 08 4d 65 6e 75 49 74 |........|..MenuIt|
|00001400| 65 6d 00 00 00 00 00 00 | 00 00 00 05 46 61 63 65 |em......|....Face|
|00001410| 73 0a 4d 6f 64 65 6c 46 | 61 63 65 73 80 80 80 80 |s.ModelF|aces....|
|00001420| 10 00 00 00 00 00 07 00 | 00 88 01 08 4d 65 6e 75 |........|....Menu|
|00001430| 49 74 65 6d 00 00 00 00 | 00 00 00 00 00 07 53 68 |Item....|......Sh|
|00001440| 61 64 69 6e 67 0c 4d 6f | 64 65 6c 53 68 61 64 69 |ading.Mo|delShadi|
|00001450| 6e 67 80 80 80 80 10 00 | 00 00 00 00 07 00 00 88 |ng......|........|
|00001460| 01 08 4d 65 6e 75 49 74 | 65 6d 00 00 00 00 00 00 |..MenuIt|em......|
|00001470| 00 00 00 01 2d 00 80 80 | 80 80 10 00 00 00 00 00 |....-...|........|
|00001480| 07 00 00 88 01 08 4d 65 | 6e 75 49 74 65 6d 00 00 |......Me|nuItem..|
|00001490| 00 00 00 00 00 00 00 04 | 49 6e 66 6f 09 4d 6f 64 |........|Info.Mod|
|000014a0| 65 6c 49 6e 66 6f 80 80 | 80 80 10 01 49 00 00 00 |elInfo..|....I...|
|000014b0| 00 07 00 00 88 01 08 4d | 65 6e 75 49 74 65 6d 00 |.......M|enuItem.|
|000014c0| 00 00 00 00 00 00 00 02 | 00 00 80 80 80 80 10 00 |........|........|
|000014d0| 00 00 00 00 07 00 00 88 | 01 08 4d 65 6e 75 49 74 |........|..MenuIt|
|000014e0| 65 6d 00 00 00 00 00 00 | 00 00 02 00 00 80 80 80 |em......|........|
|000014f0| 80 10 00 00 00 00 00 07 | 00 00 88 01 08 4d 65 6e |........|.....Men|
|00001500| 75 49 74 65 6d 00 00 00 | 00 00 00 00 00 03 41 05 |uItem...|......A.|
|00001510| 43 6c 61 73 73 08 4f 4f | 47 4c 5f 4f 46 46 88 01 |Class.OO|GL_OFF..|
|00001520| 3c 90 0c 8b 08 07 00 08 | 4f 4f 47 4c 5f 4f 46 46 |<.......|OOGL_OFF|
|00001530| ac 02 00 00 1d 0f 66 61 | 63 65 28 30 29 20 61 73 |......fa|ce(0) as|
|00001540| 20 46 61 63 65 00 16 74 | 72 61 6e 73 66 6f 72 6d | Face..t|ransform|
|00001550| 65 64 20 61 73 20 42 6f | 6f 6c 65 61 6e 00 12 67 |ed as Bo|olean..g|
|00001560| 6f 74 68 65 61 64 20 61 | 73 20 42 6f 6f 6c 65 61 |othead a|s Boolea|
|00001570| 6e 00 0f 6d 61 74 20 61 | 73 20 4d 61 74 72 69 78 |n..mat a|s Matrix|
|00001580| 33 44 00 0e 78 6d 69 6e | 20 61 73 20 64 6f 75 62 |3D..xmin| as doub|
|00001590| 6c 65 00 0e 78 6d 61 78 | 20 61 73 20 64 6f 75 62 |le..xmax| as doub|
|000015a0| 6c 65 00 0e 79 6d 69 6e | 20 61 73 20 64 6f 75 62 |le..ymin| as doub|
|000015b0| 6c 65 00 0e 79 6d 61 78 | 20 61 73 20 64 6f 75 62 |le..ymax| as doub|
|000015c0| 6c 65 00 0e 7a 6d 69 6e | 20 61 73 20 64 6f 75 62 |le..zmin| as doub|
|000015d0| 6c 65 00 0e 7a 6d 61 78 | 20 61 73 20 64 6f 75 62 |le..zmax| as doub|
|000015e0| 6c 65 00 11 76 65 72 74 | 28 30 29 20 61 73 20 64 |le..vert|(0) as d|
|000015f0| 6f 75 62 6c 65 00 11 6e | 76 65 72 74 73 20 61 73 |ouble..n|verts as|
|00001600| 20 69 6e 74 65 67 65 72 | 00 11 6e 66 61 63 65 73 | integer|..nfaces|
|00001610| 20 61 73 20 69 6e 74 65 | 67 65 72 00 11 6e 65 64 | as inte|ger..ned|
|00001620| 67 65 73 20 61 73 20 69 | 6e 74 65 67 65 72 00 10 |ges as i|nteger..|
|00001630| 76 78 28 30 29 20 61 73 | 20 69 6e 74 65 67 65 72 |vx(0) as| integer|
|00001640| 00 10 76 79 28 30 29 20 | 61 73 20 69 6e 74 65 67 |..vy(0) |as integ|
|00001650| 65 72 00 13 74 76 65 72 | 74 28 30 29 20 61 73 20 |er..tver|t(0) as |
|00001660| 69 6e 74 65 67 65 72 00 | 14 66 69 6e 64 65 78 28 |integer.|.findex(|
|00001670| 30 29 20 61 73 20 69 6e | 74 65 67 65 72 00 0e 67 |0) as in|teger..g|
|00001680| 72 28 30 29 20 61 73 20 | 43 6f 6c 6f 72 00 0f 6b |r(0) as |Color..k|
|00001690| 42 4c 41 43 4b 20 61 73 | 20 43 6f 6c 6f 72 00 0f |BLACK as| Color..|
|000016a0| 6b 57 48 49 54 45 20 61 | 73 20 43 6f 6c 6f 72 00 |kWHITE a|s Color.|
|000016b0| 1a 66 61 63 65 53 65 6c | 65 63 74 65 64 28 30 29 |.faceSel|ected(0)|
|000016c0| 20 61 73 20 42 6f 6f 6c | 65 61 6e 00 11 70 45 64 | as Bool|ean..pEd|
|000016d0| 67 65 73 20 61 73 20 42 | 6f 6f 6c 65 61 6e 00 11 |ges as B|oolean..|
|000016e0| 70 46 61 63 65 73 20 61 | 73 20 42 6f 6f 6c 65 61 |pFaces a|s Boolea|
|000016f0| 6e 00 16 64 69 66 66 75 | 73 65 4c 65 76 65 6c 20 |n..diffu|seLevel |
|00001700| 61 73 20 64 6f 75 62 6c | 65 00 16 61 6d 62 69 65 |as doubl|e..ambie|
|00001710| 6e 74 4c 65 76 65 6c 20 | 61 73 20 64 6f 75 62 6c |ntLevel |as doubl|
|00001720| 65 00 13 70 53 68 61 64 | 69 6e 67 20 61 73 20 42 |e..pShad|ing as B|
|00001730| 6f 6f 6c 65 61 6e 00 17 | 74 68 65 4c 69 67 68 74 |oolean..|theLight|
|00001740| 20 61 73 20 4c 69 67 68 | 74 53 6f 75 72 63 65 00 | as Ligh|tSource.|
|00001750| 0f 72 6f 74 20 61 73 20 | 4d 61 74 72 69 78 33 44 |.rot as |Matrix3D|
|00001760| 00 0e 05 41 62 6f 75 74 | 00 06 53 74 72 69 6e 67 |...About|..String|
|00001770| 00 07 03 07 1a 0d 1a 46 | 75 6e 63 74 69 6f 6e 20 |.......F|unction |
|00001780| 41 62 6f 75 74 28 29 20 | 41 73 20 53 74 72 69 6e |About() |As Strin|
|00001790| 67 02 2f 2f 8b 01 2f 2f | 20 63 6c 61 73 73 20 4f |g.//..//| class O|
|000017a0| 4f 47 4c 5f 4f 46 46 3a | 20 61 20 63 6c 61 73 73 |OGL_OFF:| a class|
|000017b0| 20 66 6f 72 20 70 61 72 | 73 69 6e 67 2c 20 73 74 | for par|sing, st|
|000017c0| 6f 72 69 6e 67 20 61 6e | 64 20 72 65 6e 64 65 72 |oring an|d render|
|000017d0| 69 6e 67 20 4f 46 46 20 | 33 44 20 6d 6f 64 65 6c |ing OFF |3D model|
|000017e0| 73 02 2f 2f 87 01 2f 2f | 20 46 6f 72 20 6d 6f 72 |s.//..//| For mor|
|000017f0| 65 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 61 62 |e inform|ation ab|
|00001800| 6f 75 74 20 4f 46 46 20 | 66 69 6c 65 73 20 61 6e |out OFF |files an|
|00001810| 64 20 6f 74 68 65 72 20 | 4f 4f 47 4c 20 28 4f 62 |d other |OOGL (Ob|
|00001820| 6a 65 63 74 20 4f 72 69 | 65 6e 74 65 64 3b 2f 2f |ject Ori|ented;//|
|00001830| 20 47 72 61 70 68 69 63 | 73 20 4c 69 62 72 61 72 | Graphic|s Librar|
|00001840| 79 29 20 66 69 6c 65 20 | 66 6f 72 6d 61 74 73 2c |y) file |formats,|
|00001850| 20 63 68 65 63 6b 20 74 | 68 65 20 66 6f 6c 6c 6f | check t|he follo|
|00001860| 77 69 6e 67 20 55 52 4c | 3a 03 2f 2f 20 3f 2f 2f |wing URL|:.// ?//|
|00001870| 20 68 74 74 70 3a 2f 2f | 77 77 77 2e 67 65 6f 6d | http://|www.geom|
|00001880| 2e 75 6d 6e 2e 65 64 75 | 2f 73 6f 66 74 77 61 72 |.umn.edu|/softwar|
|00001890| 65 2f 67 65 6f 6d 76 69 | 65 77 2f 64 6f 63 73 2f |e/geomvi|ew/docs/|
|000018a0| 6f 6f 67 6c 74 6f 75 72 | 2e 68 74 6d 6c 02 2f 2f |oogltour|.html.//|
|000018b0| 00 91 01 72 65 74 75 72 | 6e 20 22 63 6c 61 73 73 |...retur|n "class|
|000018c0| 20 4f 4f 47 4c 5f 4f 46 | 46 3a 20 61 20 63 6c 61 | OOGL_OF|F: a cla|
|000018d0| 73 73 20 66 6f 72 20 70 | 61 72 73 69 6e 67 2c 20 |ss for p|arsing, |
|000018e0| 73 74 6f 72 69 6e 67 20 | 61 6e 64 20 72 65 6e 64 |storing |and rend|
|000018f0| 65 72 69 6e 67 20 4f 46 | 46 20 33 44 20 6d 6f 64 |ering OF|F 3D mod|
|00001900| 65 6c 73 22 00 0c 45 6e | 64 20 46 75 6e 63 74 69 |els"..En|d Functi|
|00001910| 6f 6e 07 4c 49 43 45 4e | 53 45 00 06 53 74 72 69 |on.LICEN|SE..Stri|
|00001920| 6e 67 00 07 02 07 02 12 | 1c 46 75 6e 63 74 69 6f |ng......|.Functio|
|00001930| 6e 20 4c 49 43 45 4e 53 | 45 28 29 20 41 73 20 53 |n LICENS|E() As S|
|00001940| 74 72 69 6e 67 17 2f 2f | 20 41 75 74 68 6f 72 3a |tring.//| Author:|
|00001950| 20 44 61 65 72 6f 6e 20 | 4d 65 79 65 72 85 01 2f | Daeron |Meyer../|
|00001960| 2f 20 43 6f 70 79 72 69 | 67 68 74 20 28 63 29 20 |/ Copyri|ght (c) |
|00001970| 31 39 39 35 20 62 79 20 | 54 68 65 20 47 65 6f 6d |1995 by |The Geom|
|00001980| 65 74 72 79 20 43 65 6e | 74 65 72 2c 20 55 6e 69 |etry Cen|ter, Uni|
|00001990| 76 65 72 73 69 74 79 20 | 6f 66 20 4d 69 6e 6e 65 |versity |of Minne|
|000019a0| 73 6f 74 61 88 01 2f 2f | 20 44 69 73 74 72 69 62 |sota..//| Distrib|
|000019b0| 75 74 65 64 20 75 6e 64 | 65 72 20 74 68 65 20 74 |uted und|er the t|
|000019c0| 65 72 6d 73 20 6f 66 20 | 74 68 65 20 47 4e 55 20 |erms of |the GNU |
|000019d0| 4c 69 62 72 61 72 79 20 | 47 65 6e 65 72 61 6c 20 |Library |General |
|000019e0| 50 75 62 6c 69 63 20 4c | 69 63 65 6e 73 65 0b 2f |Public L|icense./|
|000019f0| 2f 20 31 32 2d 31 34 2d | 39 35 32 2f 2f 20 5b 74 |/ 12-14-|952// [t|
|00001a00| 72 61 6e 73 6c 61 74 65 | 64 20 74 6f 20 52 45 41 |ranslate|d to REA|
|00001a10| 4c 62 61 73 69 63 20 66 | 72 6f 6d 20 4a 61 76 61 |Lbasic f|rom Java|
|00001a20| 20 20 20 20 20 20 20 20 | 20 20 20 20 5d 36 2f 2f | | ]6//|
|00001a30| 20 5b 62 79 20 54 6f 6d | 20 50 6f 6c 6c 61 72 64 | [by Tom| Pollard|
|00001a40| 20 3c 70 6f 6c 6c 61 72 | 64 40 73 63 68 72 6f 64 | <pollar|d@schrod|
|00001a50| 69 6e 67 65 72 2e 63 6f | 6d 3e 20 46 65 62 20 31 |inger.co|m> Feb 1|
|00001a60| 39 39 39 5d 02 2f 2f 0f | 64 69 6d 20 73 20 61 73 |999].//.|dim s as|
|00001a70| 20 53 74 72 69 6e 67 00 | 24 73 20 3d 20 22 41 75 | String.|$s = "Au|
|00001a80| 74 68 6f 72 3a 20 44 61 | 65 72 6f 6e 20 4d 65 79 |thor: Da|eron Mey|
|00001a90| 65 72 22 20 2b 20 43 68 | 72 28 31 33 29 96 01 73 |er" + Ch|r(13)..s|
|00001aa0| 20 3d 20 73 20 2b 20 22 | 43 6f 70 79 72 69 67 68 | = s + "|Copyrigh|
|00001ab0| 74 20 28 63 29 20 31 39 | 39 35 20 62 79 20 54 68 |t (c) 19|95 by Th|
|00001ac0| 65 20 47 65 6f 6d 65 74 | 72 79 20 43 65 6e 74 65 |e Geomet|ry Cente|
|00001ad0| 72 2c 20 55 6e 69 76 65 | 72 73 69 74 79 20 6f 66 |r, Unive|rsity of|
|00001ae0| 20 4d 69 6e 6e 65 73 6f | 74 61 22 20 2b 20 43 68 | Minneso|ta" + Ch|
|00001af0| 72 28 31 33 29 99 01 73 | 20 3d 20 73 20 2b 20 22 |r(13)..s| = s + "|
|00001b00| 44 69 73 74 72 69 62 75 | 74 65 64 20 75 6e 64 65 |Distribu|ted unde|
|00001b10| 72 20 74 68 65 20 74 65 | 72 6d 73 20 6f 66 20 74 |r the te|rms of t|
|00001b20| 68 65 20 47 4e 55 20 4c | 69 62 72 61 72 79 20 47 |he GNU L|ibrary G|
|00001b30| 65 6e 65 72 61 6c 20 50 | 75 62 6c 69 63 20 4c 69 |eneral P|ublic Li|
|00001b40| 63 65 6e 73 65 22 20 2b | 20 43 68 72 28 31 33 29 |cense" +| Chr(13)|
|00001b50| 1c 73 20 3d 20 73 20 2b | 20 22 31 32 2d 31 34 2d |.s = s +| "12-14-|
|00001b60| 39 35 22 20 2b 20 43 68 | 72 28 31 33 29 00 08 72 |95" + Ch|r(13)..r|
|00001b70| 65 74 75 72 6e 20 73 00 | 0c 45 6e 64 20 46 75 6e |eturn s.|.End Fun|
|00001b80| 63 74 69 6f 6e 08 4f 4f | 47 4c 5f 4f 46 46 00 00 |ction.OO|GL_OFF..|
|00001b90| 00 03 00 03 00 05 0e 53 | 75 62 20 4f 4f 47 4c 5f |.......S|ub OOGL_|
|00001ba0| 4f 46 46 28 29 00 0a 49 | 6e 69 74 69 61 6c 69 7a |OFF()..I|nitializ|
|00001bb0| 65 00 07 45 6e 64 20 53 | 75 62 08 4f 4f 47 4c 5f |e..End S|ub.OOGL_|
|00001bc0| 4f 46 46 16 74 69 73 20 | 61 73 20 54 65 78 74 49 |OFF.tis |as TextI|
|00001bd0| 6e 70 75 74 53 74 72 65 | 61 6d 00 00 04 0d 04 0d |nputStre|am......|
|00001be0| 07 24 53 75 62 20 4f 4f | 47 4c 5f 4f 46 46 28 74 |.$Sub OO|GL_OFF(t|
|00001bf0| 69 73 20 61 73 20 54 65 | 78 74 49 6e 70 75 74 53 |is as Te|xtInputS|
|00001c00| 74 72 65 61 6d 29 11 64 | 69 6d 20 6f 6b 20 61 73 |tream).d|im ok as|
|00001c10| 20 42 6f 6f 6c 65 61 6e | 00 0a 49 6e 69 74 69 61 | Boolean|..Initia|
|00001c20| 6c 69 7a 65 14 6f 6b 20 | 3d 20 52 65 61 64 53 74 |lize.ok |= ReadSt|
|00001c30| 72 65 61 6d 28 74 69 73 | 29 00 07 45 6e 64 20 53 |ream(tis|)..End S|
|00001c40| 75 62 0a 49 6e 69 74 69 | 61 6c 69 7a 65 00 00 00 |ub.Initi|alize...|
|00001c50| 1c 02 1c 02 22 10 53 75 | 62 20 49 6e 69 74 69 61 |....".Su|b Initia|
|00001c60| 6c 69 7a 65 28 29 00 14 | 6d 61 74 20 3d 20 6e 65 |lize()..|mat = ne|
|00001c70| 77 20 4d 61 74 72 69 78 | 33 44 28 29 14 72 6f 74 |w Matrix|3D().rot|
|00001c80| 20 3d 20 6e 65 77 20 4d | 61 74 72 69 78 33 44 28 | = new M|atrix3D(|
|00001c90| 29 00 0b 72 65 64 69 6d | 20 76 78 28 30 29 0b 72 |)..redim| vx(0).r|
|00001ca0| 65 64 69 6d 20 76 79 28 | 30 29 00 09 6e 76 65 72 |edim vy(|0)..nver|
|00001cb0| 74 73 3d 20 30 09 6e 65 | 64 67 65 73 3d 20 30 09 |ts= 0.ne|dges= 0.|
|00001cc0| 6e 66 61 63 65 73 3d 20 | 30 00 0d 72 65 64 69 6d |nfaces= |0..redim|
|00001cd0| 20 66 61 63 65 28 30 29 | 0d 72 65 64 69 6d 20 76 | face(0)|.redim v|
|00001ce0| 65 72 74 28 30 29 0b 72 | 65 64 69 6d 20 67 72 28 |ert(0).r|edim gr(|
|00001cf0| 30 29 00 15 72 65 64 69 | 6d 20 66 61 63 65 53 65 |0)..redi|m faceSe|
|00001d00| 6c 65 63 74 65 64 28 30 | 29 00 0b 6d 61 74 2e 78 |lected(0|)..mat.x|
|00001d10| 72 6f 74 28 30 29 0b 6d | 61 74 2e 79 72 6f 74 28 |rot(0).m|at.yrot(|
|00001d20| 30 29 00 13 6b 42 4c 41 | 43 4b 20 3d 20 52 47 42 |0)..kBLA|CK = RGB|
|00001d30| 28 30 2c 30 2c 30 29 19 | 6b 57 48 49 54 45 20 3d |(0,0,0).|kWHITE =|
|00001d40| 20 52 47 42 28 32 35 35 | 2c 32 35 35 2c 32 35 35 | RGB(255|,255,255|
|00001d50| 29 00 12 70 45 64 67 65 | 73 20 3d 20 53 68 6f 77 |)..pEdge|s = Show|
|00001d60| 45 64 67 65 73 12 70 46 | 61 63 65 73 20 3d 20 53 |Edges.pF|aces = S|
|00001d70| 68 6f 77 46 61 63 65 73 | 15 70 53 68 61 64 69 6e |howFaces|.pShadin|
|00001d80| 67 20 3d 20 55 73 65 53 | 68 61 64 69 6e 67 00 1a |g = UseS|hading..|
|00001d90| 74 68 65 4c 69 67 68 74 | 20 3d 20 6e 65 77 20 4c |theLight| = new L|
|00001da0| 69 67 68 74 53 6f 75 72 | 63 65 22 74 68 65 4c 69 |ightSour|ce"theLi|
|00001db0| 67 68 74 2e 53 65 74 50 | 6f 73 69 74 69 6f 6e 50 |ght.SetP|ositionP|
|00001dc0| 6f 6c 61 72 28 34 35 2c | 20 31 35 30 29 12 61 6d |olar(45,| 150).am|
|00001dd0| 62 69 65 6e 74 4c 65 76 | 65 6c 20 3d 20 30 2e 34 |bientLev|el = 0.4|
|00001de0| 12 64 69 66 66 75 73 65 | 4c 65 76 65 6c 20 3d 20 |.diffuse|Level = |
|00001df0| 30 2e 36 00 07 45 6e 64 | 20 53 75 62 0a 52 65 61 |0.6..End| Sub.Rea|
|00001e00| 64 53 74 72 65 61 6d 16 | 74 69 73 20 61 73 20 54 |dStream.|tis as T|
|00001e10| 65 78 74 49 6e 70 75 74 | 53 74 72 65 61 6d 07 42 |extInput|Stream.B|
|00001e20| 6f 6f 6c 65 61 6e 00 bb | 02 08 bb 02 08 87 03 36 |oolean..|.......6|
|00001e30| 46 75 6e 63 74 69 6f 6e | 20 52 65 61 64 53 74 72 |Function| ReadStr|
|00001e40| 65 61 6d 28 74 69 73 20 | 61 73 20 54 65 78 74 49 |eam(tis |as TextI|
|00001e50| 6e 70 75 74 53 74 72 65 | 61 6d 29 20 41 73 20 42 |nputStre|am) As B|
|00001e60| 6f 6f 6c 65 61 6e 21 2f | 2f 20 54 68 69 73 20 6d |oolean!/|/ This m|
|00001e70| 65 74 68 6f 64 20 70 61 | 72 73 65 73 20 61 6e 20 |ethod pa|rses an |
|00001e80| 4f 46 46 20 66 69 6c 65 | 1d 64 69 6d 20 73 74 72 |OFF file|.dim str|
|00001e90| 65 61 6d 20 61 73 20 53 | 74 72 65 61 6d 54 6f 6b |eam as S|treamTok|
|00001ea0| 65 6e 69 7a 65 72 30 64 | 69 6d 20 69 2c 20 6a 2c |enizer0d|im i, j,|
|00001eb0| 20 6e 2c 20 74 74 2c 20 | 6e 75 6d 2c 20 63 6f 6f | n, tt, |num, coo|
|00001ec0| 72 64 6e 75 6d 2c 20 74 | 74 79 70 65 20 61 73 20 |rdnum, t|type as |
|00001ed0| 69 6e 74 65 67 65 72 15 | 64 69 6d 20 67 6f 74 6e |integer.|dim gotn|
|00001ee0| 75 6d 20 61 73 20 42 6f | 6f 6c 65 61 6e 11 64 69 |um as Bo|olean.di|
|00001ef0| 6d 20 76 61 6c 20 61 73 | 20 64 6f 75 62 6c 65 00 |m val as| double.|
|00001f00| 21 73 74 72 65 61 6d 20 | 3d 20 6e 65 77 20 53 74 |!stream |= new St|
|00001f10| 72 65 61 6d 54 6f 6b 65 | 6e 69 7a 65 72 28 74 69 |reamToke|nizer(ti|
|00001f20| 73 29 00 1d 73 74 72 65 | 61 6d 2e 65 6f 6c 49 73 |s)..stre|am.eolIs|
|00001f30| 53 69 67 6e 69 66 69 63 | 61 6e 74 28 54 52 55 45 |Signific|ant(TRUE|
|00001f40| 29 1d 73 74 72 65 61 6d | 2e 63 6f 6d 6d 65 6e 74 |).stream|.comment|
|00001f50| 43 68 61 72 28 41 73 63 | 42 28 22 23 22 29 29 0f |Char(Asc|B("#")).|
|00001f60| 67 6f 74 68 65 61 64 20 | 3d 20 46 41 4c 53 45 00 |gothead |= FALSE.|
|00001f70| 1b 73 63 61 6e 68 65 61 | 64 3a 2f 2f 20 72 65 61 |.scanhea|d:// rea|
|00001f80| 64 20 74 68 65 20 68 65 | 61 64 65 72 00 10 64 6f |d the he|ader..do|
|00001f90| 20 75 6e 74 69 6c 20 67 | 6f 74 68 65 61 64 1b 74 | until g|othead.t|
|00001fa0| 74 79 70 65 20 3d 20 73 | 74 72 65 61 6d 2e 6e 65 |type = s|tream.ne|
|00001fb0| 78 74 54 6f 6b 65 6e 28 | 29 20 00 1e 69 66 20 74 |xtToken(|) ..if t|
|00001fc0| 74 79 70 65 20 3d 20 73 | 74 72 65 61 6d 2e 54 54 |type = s|tream.TT|
|00001fd0| 5f 57 4f 52 44 20 74 68 | 65 6e 28 69 66 20 73 74 |_WORD th|en(if st|
|00001fe0| 72 63 6f 6d 70 28 73 74 | 72 65 61 6d 2e 73 76 61 |rcomp(st|ream.sva|
|00001ff0| 6c 2c 22 4f 46 46 22 2c | 30 29 20 3d 20 30 20 74 |l,"OFF",|0) = 0 t|
|00002000| 68 65 6e 00 0a 6e 76 65 | 72 74 73 20 3d 20 30 0a |hen..nve|rts = 0.|
|00002010| 6e 66 61 63 65 73 20 3d | 20 30 0a 6e 65 64 67 65 |nfaces =| 0.nedge|
|00002020| 73 20 3d 20 30 00 02 64 | 6f 1b 74 74 79 70 65 20 |s = 0..d|o.ttype |
|00002030| 3d 20 73 74 72 65 61 6d | 2e 6e 65 78 74 54 6f 6b |= stream|.nextTok|
|00002040| 65 6e 28 29 20 3c 6c 6f | 6f 70 20 75 6e 74 69 6c |en() <lo|op until|
|00002050| 20 74 74 79 70 65 20 3c | 3e 20 73 74 72 65 61 6d | ttype <|> stream|
|00002060| 2e 54 54 5f 45 4f 4c 20 | 41 4e 44 20 74 74 79 70 |.TT_EOL |AND ttyp|
|00002070| 65 20 3c 3e 20 73 74 72 | 65 61 6d 2e 54 54 5f 45 |e <> str|eam.TT_E|
|00002080| 4f 46 00 21 69 66 20 74 | 74 79 70 65 20 3c 3e 20 |OF.!if t|type <> |
|00002090| 73 74 72 65 61 6d 2e 54 | 54 5f 4e 55 4d 42 45 52 |stream.T|T_NUMBER|
|000020a0| 20 74 68 65 6e 22 52 61 | 69 73 65 20 6e 65 77 20 | then"Ra|ise new |
|000020b0| 55 6e 72 65 61 64 61 62 | 6c 65 5f 4f 46 46 5f 45 |Unreadab|le_OFF_E|
|000020c0| 78 63 65 70 74 69 6f 6e | 06 65 6e 64 20 69 66 14 |xception|.end if.|
|000020d0| 6e 76 65 72 74 73 20 3d | 20 73 74 72 65 61 6d 2e |nverts =| stream.|
|000020e0| 6e 76 61 6c 00 2e 69 66 | 20 73 74 72 65 61 6d 2e |nval..if| stream.|
|000020f0| 6e 65 78 74 54 6f 6b 65 | 6e 28 29 20 3c 3e 20 73 |nextToke|n() <> s|
|00002100| 74 72 65 61 6d 2e 54 54 | 5f 4e 55 4d 42 45 52 20 |tream.TT|_NUMBER |
|00002110| 74 68 65 6e 22 52 61 69 | 73 65 20 6e 65 77 20 55 |then"Rai|se new U|
|00002120| 6e 72 65 61 64 61 62 6c | 65 5f 4f 46 46 5f 45 78 |nreadabl|e_OFF_Ex|
|00002130| 63 65 70 74 69 6f 6e 06 | 65 6e 64 20 69 66 14 6e |ception.|end if.n|
|00002140| 66 61 63 65 73 20 3d 20 | 73 74 72 65 61 6d 2e 6e |faces = |stream.n|
|00002150| 76 61 6c 00 2e 69 66 20 | 73 74 72 65 61 6d 2e 6e |val..if |stream.n|
|00002160| 65 78 74 54 6f 6b 65 6e | 28 29 20 3c 3e 20 73 74 |extToken|() <> st|
|00002170| 72 65 61 6d 2e 54 54 5f | 4e 55 4d 42 45 52 20 74 |ream.TT_|NUMBER t|
|00002180| 68 65 6e 22 52 61 69 73 | 65 20 6e 65 77 20 55 6e |hen"Rais|e new Un|
|00002190| 72 65 61 64 61 62 6c 65 | 5f 4f 46 46 5f 45 78 63 |readable|_OFF_Exc|
|000021a0| 65 70 74 69 6f 6e 06 65 | 6e 64 20 69 66 14 6e 65 |eption.e|nd if.ne|
|000021b0| 64 67 65 73 20 3d 20 73 | 74 72 65 61 6d 2e 6e 76 |dges = s|tream.nv|
|000021c0| 61 6c 00 0e 67 6f 74 68 | 65 61 64 20 3d 20 54 52 |al..goth|ead = TR|
|000021d0| 55 45 00 21 65 6c 73 65 | 69 66 20 74 74 79 70 65 |UE.!else|if ttype|
|000021e0| 20 3d 20 73 74 72 65 61 | 6d 2e 54 54 5f 45 4f 46 | = strea|m.TT_EOF|
|000021f0| 20 74 68 65 6e 22 52 61 | 69 73 65 20 6e 65 77 20 | then"Ra|ise new |
|00002200| 55 6e 72 65 61 64 61 62 | 6c 65 5f 4f 46 46 5f 45 |Unreadab|le_OFF_E|
|00002210| 78 63 65 70 74 69 6f 6e | 06 65 6e 64 20 69 66 06 |xception|.end if.|
|00002220| 65 6e 64 20 69 66 00 04 | 6c 6f 6f 70 00 14 72 65 |end if..|loop..re|
|00002230| 64 69 6d 20 76 65 72 74 | 28 6e 76 65 72 74 73 2a |dim vert|(nverts*|
|00002240| 33 29 12 72 65 64 69 6d | 20 66 61 63 65 28 6e 66 |3).redim| face(nf|
|00002250| 61 63 65 73 29 14 72 65 | 64 69 6d 20 66 69 6e 64 |aces).re|dim find|
|00002260| 65 78 28 6e 66 61 63 65 | 73 29 1a 72 65 64 69 6d |ex(nface|s).redim|
|00002270| 20 66 61 63 65 53 65 6c | 65 63 74 65 64 28 6e 66 | faceSel|ected(nf|
|00002280| 61 63 65 73 29 00 15 66 | 6f 72 20 69 20 3d 20 30 |aces)..f|or i = 0|
|00002290| 20 74 6f 20 6e 66 61 63 | 65 73 2d 31 0d 66 69 6e | to nfac|es-1.fin|
|000022a0| 64 65 78 28 69 29 20 3d | 20 69 04 6e 65 78 74 00 |dex(i) =| i.next.|
|000022b0| 07 6e 75 6d 20 3d 20 30 | 0c 63 6f 6f 72 64 6e 75 |.num = 0|.coordnu|
|000022c0| 6d 20 3d 20 30 00 14 2f | 2f 20 72 65 61 64 20 74 |m = 0../|/ read t|
|000022d0| 68 65 20 76 65 72 74 69 | 63 65 73 15 64 6f 20 75 |he verti|ces.do u|
|000022e0| 6e 74 69 6c 20 6e 75 6d | 20 3d 20 6e 76 65 72 74 |ntil num| = nvert|
|000022f0| 73 00 1a 74 74 79 70 65 | 20 3d 20 73 74 72 65 61 |s..ttype| = strea|
|00002300| 6d 2e 6e 65 78 74 54 6f | 6b 65 6e 28 29 11 73 65 |m.nextTo|ken().se|
|00002310| 6c 65 63 74 20 63 61 73 | 65 20 74 74 79 70 65 00 |lect cas|e ttype.|
|00002320| 12 63 61 73 65 20 73 74 | 72 65 61 6d 2e 54 54 5f |.case st|ream.TT_|
|00002330| 45 4f 4c 14 69 66 20 63 | 6f 6f 72 64 6e 75 6d 20 |EOL.if c|oordnum |
|00002340| 3e 20 32 20 74 68 65 6e | 0c 63 6f 6f 72 64 6e 75 |> 2 then|.coordnu|
|00002350| 6d 20 3d 20 30 0b 6e 75 | 6d 20 3d 20 6e 75 6d 2b |m = 0.nu|m = num+|
|00002360| 31 06 65 6e 64 20 69 66 | 00 12 63 61 73 65 20 73 |1.end if|..case s|
|00002370| 74 72 65 61 6d 2e 54 54 | 5f 45 4f 46 22 52 61 69 |tream.TT|_EOF"Rai|
|00002380| 73 65 20 6e 65 77 20 55 | 6e 72 65 61 64 61 62 6c |se new U|nreadabl|
|00002390| 65 5f 4f 46 46 5f 45 78 | 63 65 70 74 69 6f 6e 00 |e_OFF_Ex|ception.|
|000023a0| 15 63 61 73 65 20 73 74 | 72 65 61 6d 2e 54 54 5f |.case st|ream.TT_|
|000023b0| 4e 55 4d 42 45 52 14 69 | 66 20 63 6f 6f 72 64 6e |NUMBER.i|f coordn|
|000023c0| 75 6d 20 3c 20 33 20 74 | 68 65 6e 24 76 65 72 74 |um < 3 t|hen$vert|
|000023d0| 28 6e 75 6d 2a 33 20 2b | 20 63 6f 6f 72 64 6e 75 |(num*3 +| coordnu|
|000023e0| 6d 29 20 3d 20 73 74 72 | 65 61 6d 2e 6e 76 61 6c |m) = str|eam.nval|
|000023f0| 15 63 6f 6f 72 64 6e 75 | 6d 20 3d 20 63 6f 6f 72 |.coordnu|m = coor|
|00002400| 64 6e 75 6d 2b 31 06 65 | 6e 64 20 69 66 00 0a 65 |dnum+1.e|nd if..e|
|00002410| 6e 64 20 73 65 6c 65 63 | 74 00 04 6c 6f 6f 70 00 |nd selec|t..loop.|
|00002420| 07 6e 75 6d 20 3d 20 30 | 0c 63 6f 6f 72 64 6e 75 |.num = 0|.coordnu|
|00002430| 6d 20 3d 20 30 0e 67 6f | 74 6e 75 6d 20 3d 20 46 |m = 0.go|tnum = F|
|00002440| 41 4c 53 45 00 11 2f 2f | 20 72 65 61 64 20 74 68 |ALSE..//| read th|
|00002450| 65 20 66 61 63 65 73 15 | 64 6f 20 75 6e 74 69 6c |e faces.|do until|
|00002460| 20 6e 75 6d 20 3d 20 6e | 66 61 63 65 73 00 1a 74 | num = n|faces..t|
|00002470| 74 79 70 65 20 3d 20 73 | 74 72 65 61 6d 2e 6e 65 |type = s|tream.ne|
|00002480| 78 74 54 6f 6b 65 6e 28 | 29 11 73 65 6c 65 63 74 |xtToken(|).select|
|00002490| 20 63 61 73 65 20 74 74 | 79 70 65 00 12 63 61 73 | case tt|ype..cas|
|000024a0| 65 20 73 74 72 65 61 6d | 2e 54 54 5f 45 4f 4c 0e |e stream|.TT_EOL.|
|000024b0| 69 66 20 67 6f 74 6e 75 | 6d 20 74 68 65 6e 0b 6e |if gotnu|m then.n|
|000024c0| 75 6d 20 3d 20 6e 75 6d | 2b 31 06 65 6e 64 20 69 |um = num|+1.end i|
|000024d0| 66 0e 67 6f 74 6e 75 6d | 20 3d 20 46 41 4c 53 45 |f.gotnum| = FALSE|
|000024e0| 00 13 63 61 73 65 20 73 | 74 72 65 61 6d 2e 54 54 |..case s|tream.TT|
|000024f0| 5f 45 4f 46 20 0e 69 66 | 20 67 6f 74 6e 75 6d 20 |_EOF .if| gotnum |
|00002500| 74 68 65 6e 0b 6e 75 6d | 20 3d 20 6e 75 6d 2b 31 |then.num| = num+1|
|00002510| 06 65 6e 64 20 69 66 0c | 6e 66 61 63 65 73 20 3d |.end if.|nfaces =|
|00002520| 20 6e 75 6d 0e 67 6f 74 | 6e 75 6d 20 3d 20 46 41 | num.got|num = FA|
|00002530| 4c 53 45 00 15 63 61 73 | 65 20 73 74 72 65 61 6d |LSE..cas|e stream|
|00002540| 2e 54 54 5f 4e 55 4d 42 | 45 52 12 69 66 20 4e 4f |.TT_NUMB|ER.if NO|
|00002550| 54 20 67 6f 74 6e 75 6d | 20 74 68 65 6e 00 14 66 |T gotnum| then..f|
|00002560| 61 63 65 28 6e 75 6d 29 | 20 3d 20 6e 65 77 20 46 |ace(num)| = new F|
|00002570| 61 63 65 1f 66 61 63 65 | 28 6e 75 6d 29 2e 6e 75 |ace.face|(num).nu|
|00002580| 6d 56 65 72 74 73 28 73 | 74 72 65 61 6d 2e 6e 76 |mVerts(s|tream.nv|
|00002590| 61 6c 29 0d 67 6f 74 6e | 75 6d 20 3d 20 54 52 55 |al).gotn|um = TRU|
|000025a0| 45 0c 63 6f 6f 72 64 6e | 75 6d 20 3d 20 30 00 27 |E.coordn|um = 0.'|
|000025b0| 65 6c 73 65 69 66 20 63 | 6f 6f 72 64 6e 75 6d 20 |elseif c|oordnum |
|000025c0| 3c 20 66 61 63 65 28 6e | 75 6d 29 2e 6e 76 65 72 |< face(n|um).nver|
|000025d0| 74 73 20 74 68 65 6e 00 | 29 66 61 63 65 28 6e 75 |ts then.|)face(nu|
|000025e0| 6d 29 2e 69 6e 64 65 78 | 28 63 6f 6f 72 64 6e 75 |m).index|(coordnu|
|000025f0| 6d 29 20 3d 20 33 2a 73 | 74 72 65 61 6d 2e 6e 76 |m) = 3*s|tream.nv|
|00002600| 61 6c 15 63 6f 6f 72 64 | 6e 75 6d 20 3d 20 63 6f |al.coord|num = co|
|00002610| 6f 72 64 6e 75 6d 2b 31 | 00 04 65 6c 73 65 00 12 |ordnum+1|..else..|
|00002620| 66 61 63 65 28 6e 75 6d | 29 2e 63 72 20 3d 20 32 |face(num|).cr = 2|
|00002630| 35 35 12 66 61 63 65 28 | 6e 75 6d 29 2e 63 67 20 |55.face(|num).cg |
|00002640| 3d 20 32 35 35 12 66 61 | 63 65 28 6e 75 6d 29 2e |= 255.fa|ce(num).|
|00002650| 63 62 20 3d 20 32 35 35 | 19 66 61 63 65 53 65 6c |cb = 255|.faceSel|
|00002660| 65 63 74 65 64 28 6e 75 | 6d 29 20 3d 20 46 41 4c |ected(nu|m) = FAL|
|00002670| 53 45 00 10 2f 2f 20 52 | 65 64 20 52 47 42 20 76 |SE..// R|ed RGB v|
|00002680| 61 6c 75 65 11 76 61 6c | 20 3d 20 73 74 72 65 61 |alue.val| = strea|
|00002690| 6d 2e 6e 76 61 6c 10 69 | 66 20 76 61 6c 20 3c 3d |m.nval.i|f val <=|
|000026a0| 20 31 20 74 68 65 6e 0f | 76 61 6c 20 3d 20 76 61 | 1 then.|val = va|
|000026b0| 6c 20 2a 20 32 35 35 06 | 65 6e 64 20 69 66 12 66 |l * 255.|end if.f|
|000026c0| 61 63 65 28 6e 75 6d 29 | 2e 63 72 20 3d 20 76 61 |ace(num)|.cr = va|
|000026d0| 6c 00 1a 74 74 79 70 65 | 20 3d 20 73 74 72 65 61 |l..ttype| = strea|
|000026e0| 6d 2e 6e 65 78 74 54 6f | 6b 65 6e 28 29 1e 69 66 |m.nextTo|ken().if|
|000026f0| 20 74 74 79 70 65 20 3c | 3e 20 73 74 72 65 61 6d | ttype <|> stream|
|00002700| 2e 54 54 5f 45 4f 4c 20 | 74 68 65 6e 12 2f 2f 20 |.TT_EOL |then.// |
|00002710| 47 72 65 65 6e 20 52 47 | 42 20 76 61 6c 75 65 11 |Green RG|B value.|
|00002720| 76 61 6c 20 3d 20 73 74 | 72 65 61 6d 2e 6e 76 61 |val = st|ream.nva|
|00002730| 6c 10 69 66 20 76 61 6c | 20 3c 3d 20 31 20 74 68 |l.if val| <= 1 th|
|00002740| 65 6e 0d 76 61 6c 20 3d | 20 76 61 6c 2a 32 35 35 |en.val =| val*255|
|00002750| 06 65 6e 64 20 69 66 12 | 66 61 63 65 28 6e 75 6d |.end if.|face(num|
|00002760| 29 2e 63 67 20 3d 20 76 | 61 6c 00 1a 74 74 79 70 |).cg = v|al..ttyp|
|00002770| 65 20 3d 20 73 74 72 65 | 61 6d 2e 6e 65 78 74 54 |e = stre|am.nextT|
|00002780| 6f 6b 65 6e 28 29 1e 69 | 66 20 74 74 79 70 65 20 |oken().i|f ttype |
|00002790| 3c 3e 20 73 74 72 65 61 | 6d 2e 54 54 5f 45 4f 4c |<> strea|m.TT_EOL|
|000027a0| 20 74 68 65 6e 11 2f 2f | 20 42 6c 75 65 20 52 47 | then.//| Blue RG|
|000027b0| 42 20 76 61 6c 75 65 11 | 76 61 6c 20 3d 20 73 74 |B value.|val = st|
|000027c0| 72 65 61 6d 2e 6e 76 61 | 6c 10 69 66 20 76 61 6c |ream.nva|l.if val|
|000027d0| 20 3c 3d 20 31 20 74 68 | 65 6e 0e 20 76 61 6c 20 | <= 1 th|en. val |
|000027e0| 3d 20 76 61 6c 2a 32 35 | 35 06 65 6e 64 20 69 66 |= val*25|5.end if|
|000027f0| 12 66 61 63 65 28 6e 75 | 6d 29 2e 63 62 20 3d 20 |.face(nu|m).cb = |
|00002800| 76 61 6c 00 1f 2f 2f 20 | 69 67 6e 6f 72 65 20 61 |val..// |ignore a|
|00002810| 6e 79 20 73 75 62 73 65 | 71 75 65 6e 74 20 66 69 |ny subse|quent fi|
|00002820| 65 6c 64 73 02 64 6f 1b | 74 74 79 70 65 20 3d 20 |elds.do.|ttype = |
|00002830| 73 74 72 65 61 6d 2e 6e | 65 78 74 54 6f 6b 65 6e |stream.n|extToken|
|00002840| 28 29 20 39 6c 6f 6f 70 | 20 75 6e 74 69 6c 20 74 |() 9loop| until t|
|00002850| 74 79 70 65 20 3d 20 73 | 74 72 65 61 6d 2e 54 54 |type = s|tream.TT|
|00002860| 5f 45 4f 4c 20 4f 52 20 | 74 74 79 70 65 20 3d 20 |_EOL OR |ttype = |
|00002870| 73 74 72 65 61 6d 2e 54 | 54 5f 45 4f 46 0f 73 74 |stream.T|T_EOF.st|
|00002880| 72 65 61 6d 2e 50 75 73 | 68 42 61 63 6b 00 04 65 |ream.Pus|hBack..e|
|00002890| 6c 73 65 12 66 61 63 65 | 28 6e 75 6d 29 2e 63 72 |lse.face|(num).cr|
|000028a0| 20 3d 20 32 35 35 12 66 | 61 63 65 28 6e 75 6d 29 | = 255.f|ace(num)|
|000028b0| 2e 63 67 20 3d 20 32 35 | 35 12 66 61 63 65 28 6e |.cg = 25|5.face(n|
|000028c0| 75 6d 29 2e 63 62 20 3d | 20 32 35 35 0b 6e 75 6d |um).cb =| 255.num|
|000028d0| 20 3d 20 6e 75 6d 2b 31 | 0e 67 6f 74 6e 75 6d 20 | = num+1|.gotnum |
|000028e0| 3d 20 46 41 4c 53 45 00 | 06 65 6e 64 20 69 66 00 |= FALSE.|.end if.|
|000028f0| 04 65 6c 73 65 12 66 61 | 63 65 28 6e 75 6d 29 2e |.else.fa|ce(num).|
|00002900| 63 72 20 3d 20 32 35 35 | 12 66 61 63 65 28 6e 75 |cr = 255|.face(nu|
|00002910| 6d 29 2e 63 67 20 3d 20 | 32 35 35 12 66 61 63 65 |m).cg = |255.face|
|00002920| 28 6e 75 6d 29 2e 63 62 | 20 3d 20 32 35 35 0b 6e |(num).cb| = 255.n|
|00002930| 75 6d 20 3d 20 6e 75 6d | 2b 31 0e 67 6f 74 6e 75 |um = num|+1.gotnu|
|00002940| 6d 20 3d 20 46 41 4c 53 | 45 00 06 65 6e 64 20 69 |m = FALS|E..end i|
|00002950| 66 06 65 6e 64 20 69 66 | 00 0a 65 6e 64 20 73 65 |f.end if|..end se|
|00002960| 6c 65 63 74 00 04 6c 6f | 6f 70 00 24 2f 2f 20 47 |lect..lo|op.$// G|
|00002970| 65 74 20 73 75 72 66 61 | 63 65 20 6e 6f 72 6d 61 |et surfa|ce norma|
|00002980| 6c 20 66 6f 72 20 65 61 | 63 68 20 66 61 63 65 c9 |l for ea|ch face.|
|00002990| 0a 47 65 74 4e 6f 72 6d | 61 6c 73 00 0b 72 65 74 |.GetNorm|als..ret|
|000029a0| 75 72 6e 20 54 52 55 45 | 00 22 45 78 63 65 70 74 |urn TRUE|."Except|
|000029b0| 69 6f 6e 20 55 6e 72 65 | 61 64 61 62 6c 65 5f 4f |ion Unre|adable_O|
|000029c0| 46 46 5f 45 78 63 65 70 | 74 69 6f 6e 33 4d 73 67 |FF_Excep|tion3Msg|
|000029d0| 42 6f 78 20 22 54 68 65 | 20 68 65 61 64 65 72 20 |Box "The| header |
|000029e0| 6f 66 20 74 68 69 73 20 | 2e 6f 66 66 20 66 69 6c |of this |.off fil|
|000029f0| 65 20 69 73 20 75 6e 72 | 65 61 64 61 62 6c 65 22 |e is unr|eadable"|
|00002a00| 0c 72 65 74 75 72 6e 20 | 46 41 4c 53 45 00 00 00 |.return |FALSE...|
|00002a10| 0c 45 6e 64 20 46 75 6e | 63 74 69 6f 6e 02 51 53 |.End Fun|ction.QS|
|00002a20| 21 6c 65 66 74 20 61 73 | 20 69 6e 74 65 67 65 72 |!left as| integer|
|00002a30| 2c 20 72 69 67 68 74 20 | 61 73 20 69 6e 74 65 67 |, right |as integ|
|00002a40| 65 72 00 00 07 27 07 27 | 26 29 53 75 62 20 51 53 |er...'.'|&)Sub QS|
|00002a50| 28 6c 65 66 74 20 61 73 | 20 69 6e 74 65 67 65 72 |(left as| integer|
|00002a60| 2c 20 72 69 67 68 74 20 | 61 73 20 69 6e 74 65 67 |, right |as integ|
|00002a70| 65 72 29 00 19 64 69 6d | 20 69 2c 20 6a 2c 20 78 |er)..dim| i, j, x|
|00002a80| 2c 20 79 20 61 73 20 69 | 6e 74 65 67 65 72 00 08 |, y as i|nteger..|
|00002a90| 69 20 3d 20 6c 65 66 74 | 09 6a 20 3d 20 72 69 67 |i = left|.j = rig|
|00002aa0| 68 74 00 27 78 20 3d 20 | 66 61 63 65 28 66 69 6e |ht.'x = |face(fin|
|00002ab0| 64 65 78 28 28 6c 65 66 | 74 2b 72 69 67 68 74 29 |dex((lef|t+right)|
|00002ac0| 2f 32 29 29 2e 7a 64 65 | 70 74 68 00 02 64 6f 00 |/2)).zde|pth..do.|
|00002ad0| 2e 77 68 69 6c 65 20 66 | 61 63 65 28 66 69 6e 64 |.while f|ace(find|
|00002ae0| 65 78 28 69 29 29 2e 7a | 64 65 70 74 68 20 3e 20 |ex(i)).z|depth > |
|00002af0| 78 20 41 4e 44 20 69 20 | 3c 20 72 69 67 68 74 07 |x AND i |< right.|
|00002b00| 69 20 3d 20 69 2b 31 04 | 77 65 6e 64 00 2d 77 68 |i = i+1.|wend.-wh|
|00002b10| 69 6c 65 20 78 20 3e 20 | 66 61 63 65 28 66 69 6e |ile x > |face(fin|
|00002b20| 64 65 78 28 6a 29 29 2e | 7a 64 65 70 74 68 20 41 |dex(j)).|zdepth A|
|00002b30| 4e 44 20 6a 20 3e 20 6c | 65 66 74 07 6a 20 3d 20 |ND j > l|eft.j = |
|00002b40| 6a 2d 31 04 77 65 6e 64 | 00 0e 69 66 20 69 20 3c |j-1.wend|..if i <|
|00002b50| 3d 20 6a 20 74 68 65 6e | 0d 79 20 3d 20 66 69 6e |= j then|.y = fin|
|00002b60| 64 65 78 28 69 29 15 66 | 69 6e 64 65 78 28 69 29 |dex(i).f|index(i)|
|00002b70| 20 3d 20 66 69 6e 64 65 | 78 28 6a 29 0d 66 69 6e | = finde|x(j).fin|
|00002b80| 64 65 78 28 6a 29 20 3d | 20 79 07 69 20 3d 20 69 |dex(j) =| y.i = i|
|00002b90| 2b 31 07 6a 20 3d 20 6a | 2d 31 06 65 6e 64 20 69 |+1.j = j|-1.end i|
|00002ba0| 66 00 10 6c 6f 6f 70 20 | 75 6e 74 69 6c 20 69 20 |f..loop |until i |
|00002bb0| 3e 20 6a 00 10 69 66 20 | 6c 65 66 74 20 3c 20 6a |> j..if |left < j|
|00002bc0| 20 74 68 65 6e 0b 71 73 | 28 6c 65 66 74 2c 20 6a | then.qs|(left, j|
|00002bd0| 29 06 65 6e 64 20 69 66 | 00 11 69 66 20 69 20 3c |).end if|..if i <|
|00002be0| 20 72 69 67 68 74 20 74 | 68 65 6e 0c 71 73 28 69 | right t|hen.qs(i|
|00002bf0| 2c 20 72 69 67 68 74 29 | 06 65 6e 64 20 69 66 00 |, right)|.end if.|
|00002c00| 07 45 6e 64 20 53 75 62 | 09 54 72 61 6e 73 66 6f |.End Sub|.Transfo|
|00002c10| 72 6d 00 00 00 12 00 12 | 00 14 0f 53 75 62 20 54 |rm......|...Sub T|
|00002c20| 72 61 6e 73 66 6f 72 6d | 28 29 18 64 69 6d 20 74 |ransform|().dim t|
|00002c30| 78 2c 20 74 79 2c 20 74 | 7a 20 61 73 20 64 6f 75 |x, ty, t|z as dou|
|00002c40| 62 6c 65 15 64 69 6d 20 | 69 2c 20 6e 75 6d 20 61 |ble.dim |i, num a|
|00002c50| 73 20 69 6e 74 65 67 65 | 72 00 22 69 66 20 74 72 |s intege|r."if tr|
|00002c60| 61 6e 73 66 6f 72 6d 65 | 64 20 4f 52 20 6e 76 65 |ansforme|d OR nve|
|00002c70| 72 74 73 20 3c 3d 20 30 | 20 74 68 65 6e 06 72 65 |rts <= 0| then.re|
|00002c80| 74 75 72 6e 06 65 6e 64 | 20 69 66 00 15 72 65 64 |turn.end| if..red|
|00002c90| 69 6d 20 74 76 65 72 74 | 28 6e 76 65 72 74 73 2a |im tvert|(nverts*|
|00002ca0| 33 29 00 22 6d 61 74 2e | 54 72 61 6e 73 66 6f 72 |3)."mat.|Transfor|
|00002cb0| 6d 28 76 65 72 74 2c 20 | 74 76 65 72 74 2c 20 6e |m(vert, |tvert, n|
|00002cc0| 76 65 72 74 73 29 00 81 | 01 72 6f 74 2e 54 72 61 |verts)..|.rot.Tra|
|00002cd0| 6e 73 66 6f 72 6d 58 59 | 5a 28 20 74 68 65 4c 69 |nsformXY|Z( theLi|
|00002ce0| 67 68 74 2e 78 2c 20 74 | 68 65 4c 69 67 68 74 2e |ght.x, t|heLight.|
|00002cf0| 79 2c 20 74 68 65 4c 69 | 67 68 74 2e 7a 2c 20 74 |y, theLi|ght.z, t|
|00002d00| 78 2c 20 74 79 2c 20 74 | 7a 29 10 74 68 65 4c 69 |x, ty, t|z).theLi|
|00002d10| 67 68 74 2e 74 78 20 3d | 20 74 78 10 74 68 65 4c |ght.tx =| tx.theL|
|00002d20| 69 67 68 74 2e 74 79 20 | 3d 20 74 79 10 74 68 65 |ight.ty |= ty.the|
|00002d30| 4c 69 67 68 74 2e 74 7a | 20 3d 20 74 7a 00 12 74 |Light.tz| = tz..t|
|00002d40| 72 61 6e 73 66 6f 72 6d | 65 64 20 3d 20 54 52 55 |ransform|ed = TRU|
|00002d50| 45 00 07 45 6e 64 20 53 | 75 62 06 46 69 6e 64 42 |E..End S|ub.FindB|
|00002d60| 42 00 00 00 11 09 11 09 | 32 0c 53 75 62 20 46 69 |B.......|2.Sub Fi|
|00002d70| 6e 64 42 42 28 29 2b 2f | 2f 20 63 61 6c 63 75 6c |ndBB()+/|/ calcul|
|00002d80| 61 74 65 20 74 68 65 20 | 62 6f 75 6e 64 69 6e 67 |ate the |bounding|
|00002d90| 20 62 6f 78 20 6f 66 20 | 6f 75 72 20 6f 62 6a 65 | box of |our obje|
|00002da0| 63 74 39 64 69 6d 20 78 | 6d 69 6e 2c 20 78 6d 61 |ct9dim x|min, xma|
|00002db0| 78 2c 20 79 6d 69 6e 2c | 20 79 6d 61 78 2c 20 7a |x, ymin,| ymax, z|
|00002dc0| 6d 69 6e 2c 20 7a 6d 61 | 78 2c 20 78 2c 20 79 2c |min, zma|x, x, y,|
|00002dd0| 20 7a 20 61 73 20 64 6f | 75 62 6c 65 15 64 69 6d | z as do|uble.dim|
|00002de0| 20 69 2c 20 6e 75 6d 20 | 61 73 20 69 6e 74 65 67 | i, num |as integ|
|00002df0| 65 72 00 13 69 66 20 6e | 76 65 72 74 73 20 3c 3d |er..if n|verts <=|
|00002e00| 20 30 20 74 68 65 6e 06 | 72 65 74 75 72 6e 06 65 | 0 then.|return.e|
|00002e10| 6e 64 20 69 66 00 0e 78 | 6d 69 6e 20 3d 20 76 65 |nd if..x|min = ve|
|00002e20| 72 74 28 30 29 0b 78 6d | 61 78 20 3d 20 78 6d 69 |rt(0).xm|ax = xmi|
|00002e30| 6e 0e 79 6d 69 6e 20 3d | 20 76 65 72 74 28 31 29 |n.ymin =| vert(1)|
|00002e40| 0b 79 6d 61 78 20 3d 20 | 79 6d 69 6e 0e 7a 6d 69 |.ymax = |ymin.zmi|
|00002e50| 6e 20 3d 20 76 65 72 74 | 28 32 29 0b 7a 6d 61 78 |n = vert|(2).zmax|
|00002e60| 20 3d 20 7a 6d 69 6e 00 | 17 66 6f 72 20 6e 75 6d | = zmin.|.for num|
|00002e70| 20 3d 20 30 20 74 6f 20 | 6e 76 65 72 74 73 2d 31 | = 0 to |nverts-1|
|00002e80| 09 69 20 3d 20 6e 75 6d | 2a 33 00 0b 78 20 3d 20 |.i = num|*3..x = |
|00002e90| 76 65 72 74 28 69 29 10 | 69 66 20 78 20 3c 20 78 |vert(i).|if x < x|
|00002ea0| 6d 69 6e 20 74 68 65 6e | 08 78 6d 69 6e 20 3d 20 |min then|.xmin = |
|00002eb0| 78 14 65 6c 73 65 69 66 | 20 78 20 3e 20 78 6d 61 |x.elseif| x > xma|
|00002ec0| 78 20 74 68 65 6e 08 78 | 6d 61 78 20 3d 20 78 06 |x then.x|max = x.|
|00002ed0| 65 6e 64 20 69 66 00 0f | 79 20 3d 20 76 65 72 74 |end if..|y = vert|
|00002ee0| 28 69 20 2b 20 31 29 10 | 69 66 20 79 20 3c 20 79 |(i + 1).|if y < y|
|00002ef0| 6d 69 6e 20 74 68 65 6e | 08 79 6d 69 6e 20 3d 20 |min then|.ymin = |
|00002f00| 79 14 65 6c 73 65 69 66 | 20 79 20 3e 20 79 6d 61 |y.elseif| y > yma|
|00002f10| 78 20 74 68 65 6e 08 79 | 6d 61 78 20 3d 20 79 06 |x then.y|max = y.|
|00002f20| 65 6e 64 20 69 66 00 0f | 7a 20 3d 20 76 65 72 74 |end if..|z = vert|
|00002f30| 28 69 20 2b 20 32 29 10 | 69 66 20 7a 20 3c 20 7a |(i + 2).|if z < z|
|00002f40| 6d 69 6e 20 74 68 65 6e | 08 7a 6d 69 6e 20 3d 20 |min then|.zmin = |
|00002f50| 7a 14 65 6c 73 65 69 66 | 20 7a 20 3e 20 7a 6d 61 |z.elseif| z > zma|
|00002f60| 78 20 74 68 65 6e 08 7a | 6d 61 78 20 3d 20 7a 06 |x then.z|max = z.|
|00002f70| 65 6e 64 20 69 66 00 04 | 6e 65 78 74 00 0e 6d 65 |end if..|next..me|
|00002f80| 2e 78 6d 61 78 20 3d 20 | 78 6d 61 78 0e 6d 65 2e |.xmax = |xmax.me.|
|00002f90| 78 6d 69 6e 20 3d 20 78 | 6d 69 6e 0e 6d 65 2e 79 |xmin = x|min.me.y|
|00002fa0| 6d 61 78 20 3d 20 79 6d | 61 78 0e 6d 65 2e 79 6d |max = ym|ax.me.ym|
|00002fb0| 69 6e 20 3d 20 79 6d 69 | 6e 0e 6d 65 2e 7a 6d 61 |in = ymi|n.me.zma|
|00002fc0| 78 20 3d 20 7a 6d 61 78 | 0e 6d 65 2e 7a 6d 69 6e |x = zmax|.me.zmin|
|00002fd0| 20 3d 20 7a 6d 69 6e 00 | 07 45 6e 64 20 53 75 62 | = zmin.|.End Sub|
|00002fe0| 05 50 61 69 6e 74 0d 67 | 20 61 73 20 47 72 61 70 |.Paint.g| as Grap|
|00002ff0| 68 69 63 73 00 00 98 01 | 0d 98 01 0d a7 01 18 53 |hics....|.......S|
|00003000| 75 62 20 50 61 69 6e 74 | 28 67 20 61 73 20 47 72 |ub Paint|(g as Gr|
|00003010| 61 70 68 69 63 73 29 1c | 64 69 6d 20 69 2c 20 6b |aphics).|dim i, k|
|00003020| 2c 20 63 2c 20 66 2c 20 | 76 20 61 73 20 69 6e 74 |, c, f, |v as int|
|00003030| 65 67 65 72 15 64 69 6d | 20 76 78 79 28 30 29 20 |eger.dim| vxy(0) |
|00003040| 61 73 20 69 6e 74 65 67 | 65 72 11 64 69 6d 20 66 |as integ|er.dim f|
|00003050| 61 63 65 69 20 61 73 20 | 46 61 63 65 13 64 69 6d |acei as |Face.dim|
|00003060| 20 63 6f 6c 6f 72 69 20 | 61 73 20 43 6f 6c 6f 72 | colori |as Color|
|00003070| 18 64 69 6d 20 64 6f 74 | 2c 20 69 6c 6c 75 6d 20 |.dim dot|, illum |
|00003080| 61 73 20 64 6f 75 62 6c | 65 00 27 69 66 20 55 62 |as doubl|e.'if Ub|
|00003090| 6f 75 6e 64 28 76 65 72 | 74 29 20 3d 20 30 20 4f |ound(ver|t) = 0 O|
|000030a0| 52 20 6e 76 65 72 74 73 | 20 3c 3d 20 30 20 74 68 |R nverts| <= 0 th|
|000030b0| 65 6e 06 72 65 74 75 72 | 6e 06 65 6e 64 20 69 66 |en.retur|n.end if|
|000030c0| 00 09 54 72 61 6e 73 66 | 6f 72 6d 00 1d 23 70 72 |..Transf|orm..#pr|
|000030d0| 61 67 6d 61 20 64 69 73 | 61 62 6c 65 42 6f 75 6e |agma dis|ableBoun|
|000030e0| 64 73 43 68 65 63 6b 69 | 6e 67 1e 23 70 72 61 67 |dsChecki|ng.#prag|
|000030f0| 6d 61 20 64 69 73 61 62 | 6c 65 42 61 63 6b 67 72 |ma disab|leBackgr|
|00003100| 6f 75 6e 64 54 61 73 6b | 73 00 38 69 66 20 55 62 |oundTask|s.8if Ub|
|00003110| 6f 75 6e 64 28 67 72 29 | 20 3d 20 30 20 74 68 65 |ound(gr)| = 0 the|
|00003120| 6e 20 20 20 2f 2f 20 61 | 6c 6c 6f 63 61 74 65 20 |n // a|llocate |
|00003130| 63 6f 6c 6f 72 73 20 69 | 66 20 6e 65 63 65 73 73 |colors i|f necess|
|00003140| 61 72 79 16 72 65 64 69 | 6d 20 67 72 28 6e 66 61 |ary.redi|m gr(nfa|
|00003150| 63 65 73 29 20 20 20 20 | 20 20 16 66 6f 72 20 20 |ces) | .for |
|00003160| 69 20 3d 20 30 20 74 6f | 20 6e 66 61 63 65 73 2d |i = 0 to| nfaces-|
|00003170| 31 2f 67 72 28 69 29 20 | 3d 20 52 47 42 28 66 61 |1/gr(i) |= RGB(fa|
|00003180| 63 65 28 69 29 2e 63 72 | 2c 20 66 61 63 65 28 69 |ce(i).cr|, face(i|
|00003190| 29 2e 63 67 2c 20 66 61 | 63 65 28 69 29 2e 63 62 |).cg, fa|ce(i).cb|
|000031a0| 29 04 6e 65 78 74 06 65 | 6e 64 20 69 66 00 84 01 |).next.e|nd if...|
|000031b0| 2f 2f 20 43 61 6c 63 75 | 6c 61 74 65 20 74 68 65 |// Calcu|late the|
|000031c0| 20 61 76 65 72 61 67 65 | 20 7a 20 64 65 70 74 68 | average| z depth|
|000031d0| 20 6f 66 20 66 61 63 65 | 73 20 61 6e 64 20 75 73 | of face|s and us|
|000031e0| 65 20 74 68 69 73 20 74 | 6f 20 73 6f 72 74 20 74 |e this t|o sort t|
|000031f0| 68 65 6d 2e 84 01 2f 2f | 20 54 68 69 73 20 69 73 |hem...//| This is|
|00003200| 20 63 61 6c 6c 65 64 20 | 74 68 65 20 22 50 61 69 | called |the "Pai|
|00003210| 6e 74 65 72 27 73 20 61 | 6c 67 6f 72 69 74 68 6d |nter's a|lgorithm|
|00003220| 22 20 61 6e 64 20 61 6c | 74 68 6f 75 67 68 20 69 |" and al|though i|
|00003230| 74 20 77 6f 72 6b 73 20 | 69 6e 85 01 2f 2f 20 73 |t works |in..// s|
|00003240| 6f 6d 65 20 63 61 73 65 | 2c 20 64 6f 65 73 20 2a |ome case|, does *|
|00003250| 6e 6f 74 2a 20 61 6c 77 | 61 79 73 20 70 72 6f 76 |not* alw|ays prov|
|00003260| 69 64 65 20 61 20 63 6f | 72 72 65 63 74 20 6f 72 |ide a co|rrect or|
|00003270| 64 65 72 69 6e 67 2e 20 | 53 6f 6d 65 74 69 6d 65 |dering. |Sometime|
|00003280| 73 87 01 2f 2f 20 61 20 | 63 6f 72 72 65 63 74 20 |s..// a |correct |
|00003290| 6f 72 64 65 72 69 6e 67 | 20 69 73 20 69 6d 70 6f |ordering| is impo|
|000032a0| 73 73 69 62 6c 65 2c 20 | 65 73 70 65 63 69 61 6c |ssible, |especial|
|000032b0| 6c 79 20 69 6e 20 74 68 | 65 20 63 61 73 65 20 6f |ly in th|e case o|
|000032c0| 66 20 6d 75 74 75 61 6c | 6c 79 18 2f 2f 20 6f 76 |f mutual|ly.// ov|
|000032d0| 65 72 6c 61 70 70 69 6e | 67 20 70 6f 6c 79 67 6f |erlappin|g polygo|
|000032e0| 6e 73 2e 02 2f 2f 00 15 | 66 6f 72 20 69 20 3d 20 |ns..//..|for i = |
|000032f0| 30 20 74 6f 20 6e 66 61 | 63 65 73 2d 31 0f 66 61 |0 to nfa|ces-1.fa|
|00003300| 63 65 69 20 3d 20 66 61 | 63 65 28 69 29 10 66 61 |cei = fa|ce(i).fa|
|00003310| 63 65 69 2e 7a 64 65 70 | 74 68 20 3d 20 30 00 1b |cei.zdep|th = 0..|
|00003320| 66 6f 72 20 63 20 3d 20 | 30 20 74 6f 20 66 61 63 |for c = |0 to fac|
|00003330| 65 69 2e 6e 76 65 72 74 | 73 2d 31 2e 69 66 20 66 |ei.nvert|s-1.if f|
|00003340| 61 63 65 69 2e 7a 64 65 | 70 74 68 20 3c 20 74 76 |acei.zde|pth < tv|
|00003350| 65 72 74 28 66 61 63 65 | 69 2e 69 6e 64 65 78 28 |ert(face|i.index(|
|00003360| 63 29 2b 32 29 20 74 68 | 65 6e 26 66 61 63 65 69 |c)+2) th|en&facei|
|00003370| 2e 7a 64 65 70 74 68 20 | 3d 20 74 76 65 72 74 28 |.zdepth |= tvert(|
|00003380| 66 61 63 65 69 2e 69 6e | 64 65 78 28 63 29 2b 32 |facei.in|dex(c)+2|
|00003390| 29 06 65 6e 64 20 69 66 | 04 6e 65 78 74 00 04 6e |).end if|.next..n|
|000033a0| 65 78 74 00 28 71 73 28 | 30 2c 20 6e 66 61 63 65 |ext.(qs(|0, nface|
|000033b0| 73 2d 31 29 20 20 2f 2f | 20 71 75 69 63 6b 20 73 |s-1) //| quick s|
|000033c0| 6f 72 74 20 74 68 65 20 | 66 61 63 65 73 00 15 66 |ort the |faces..f|
|000033d0| 6f 72 20 66 20 3d 20 30 | 20 74 6f 20 6e 66 61 63 |or f = 0| to nfac|
|000033e0| 65 73 2d 31 0d 69 20 3d | 20 66 69 6e 64 65 78 28 |es-1.i =| findex(|
|000033f0| 66 29 0f 66 61 63 65 69 | 20 3d 20 66 61 63 65 28 |f).facei| = face(|
|00003400| 69 29 05 76 20 3d 20 30 | 00 84 01 72 65 64 69 6d |i).v = 0|...redim|
|00003410| 20 76 78 79 28 32 2a 66 | 61 63 65 69 2e 6e 76 65 | vxy(2*f|acei.nve|
|00003420| 72 74 73 29 20 2f 2f 20 | 2e 2e 2e 62 65 63 61 75 |rts) // |...becau|
|00003430| 73 65 20 44 72 61 77 50 | 6f 6c 79 67 6f 6e 20 75 |se DrawP|olygon u|
|00003440| 73 65 73 20 55 62 6f 75 | 6e 64 28 76 78 79 29 00 |ses Ubou|nd(vxy).|
|00003450| 05 6b 20 3d 20 31 1b 66 | 6f 72 20 63 20 3d 20 30 |.k = 1.f|or c = 0|
|00003460| 20 74 6f 20 66 61 63 65 | 69 2e 6e 76 65 72 74 73 | to face|i.nverts|
|00003470| 2d 31 1e 76 78 79 28 6b | 29 20 3d 20 74 76 65 72 |-1.vxy(k|) = tver|
|00003480| 74 28 66 61 63 65 69 2e | 69 6e 64 65 78 28 63 29 |t(facei.|index(c)|
|00003490| 29 22 76 78 79 28 6b 2b | 31 29 20 3d 20 74 76 65 |)"vxy(k+|1) = tve|
|000034a0| 72 74 28 66 61 63 65 69 | 2e 69 6e 64 65 78 28 63 |rt(facei|.index(c|
|000034b0| 29 2b 31 29 07 6b 20 3d | 20 6b 2b 32 04 6e 65 78 |)+1).k =| k+2.nex|
|000034c0| 74 00 0e 69 66 20 70 46 | 61 63 65 73 20 74 68 65 |t..if pF|aces the|
|000034d0| 6e 00 10 69 66 20 70 53 | 68 61 64 69 6e 67 20 74 |n..if pS|hading t|
|000034e0| 68 65 6e 3b 2f 2f 20 53 | 74 61 6e 64 61 72 64 20 |hen;// S|tandard |
|000034f0| 73 68 61 64 69 6e 67 20 | 6d 6f 64 65 6c 20 2d 20 |shading |model - |
|00003500| 63 6f 6c 6f 72 20 69 6e | 74 65 6e 73 69 74 79 20 |color in|tensity |
|00003510| 69 73 20 70 72 6f 70 6f | 72 74 69 6f 6e 61 6c 3b |is propo|rtional;|
|00003520| 2f 2f 20 74 6f 20 74 68 | 65 20 64 6f 74 20 70 72 |// to th|e dot pr|
|00003530| 6f 64 75 63 74 20 6f 66 | 20 74 68 65 20 6c 69 67 |oduct of| the lig|
|00003540| 68 74 20 64 69 72 65 63 | 74 69 6f 6e 20 61 6e 64 |ht direc|tion and|
|00003550| 20 74 68 65 20 6e 6f 72 | 6d 61 6c 3f 2f 2f 20 76 | the nor|mal?// v|
|00003560| 65 63 74 6f 72 20 6f 66 | 20 65 61 63 68 20 66 61 |ector of| each fa|
|00003570| 63 65 2e 20 20 48 65 72 | 65 20 77 65 20 61 64 64 |ce. Her|e we add|
|00003580| 20 61 20 31 2f 34 2d 69 | 6e 74 65 6e 73 69 74 79 | a 1/4-i|ntensity|
|00003590| 20 62 61 63 6b 20 6c 69 | 67 68 74 81 01 2f 2f 20 | back li|ght..// |
|000035a0| 6f 6e 20 74 68 65 20 6f | 70 70 6f 73 69 74 65 20 |on the o|pposite |
|000035b0| 73 69 64 65 20 6f 66 20 | 74 68 65 20 6d 6f 64 65 |side of |the mode|
|000035c0| 6c 20 66 72 6f 6d 20 74 | 68 65 20 6d 61 69 6e 20 |l from t|he main |
|000035d0| 6c 69 67 68 74 20 61 73 | 20 77 65 6c 6c 2e 02 2f |light as| well../|
|000035e0| 2f 3c 2f 2f 20 46 6f 72 | 20 74 75 74 6f 72 69 61 |/<// For| tutoria|
|000035f0| 6c 2c 20 73 65 65 20 3c | 68 74 74 70 3a 2f 2f 65 |l, see <|http://e|
|00003600| 78 61 66 6c 6f 70 2e 6f | 72 67 2f 64 6f 63 73 2f |xaflop.o|rg/docs/|
|00003610| 6c 63 61 2f 6c 63 61 31 | 2e 68 74 6d 6c 3e 02 2f |lca/lca1|.html>./|
|00003620| 2f 88 01 64 6f 74 20 3d | 20 66 61 63 65 69 2e 78 |/..dot =| facei.x|
|00003630| 6e 2a 74 68 65 4c 69 67 | 68 74 2e 74 78 20 2b 20 |n*theLig|ht.tx + |
|00003640| 66 61 63 65 69 2e 79 6e | 2a 74 68 65 4c 69 67 68 |facei.yn|*theLigh|
|00003650| 74 2e 74 79 20 2b 20 66 | 61 63 65 69 2e 7a 6e 2a |t.ty + f|acei.zn*|
|00003660| 74 68 65 4c 69 67 68 74 | 2e 74 7a 0f 69 66 20 64 |theLight|.tz.if d|
|00003670| 6f 74 20 3c 20 30 20 74 | 68 65 6e 0f 64 6f 74 20 |ot < 0 t|hen.dot |
|00003680| 3d 20 2d 30 2e 32 35 2a | 64 6f 74 06 65 6e 64 20 |= -0.25*|dot.end |
|00003690| 69 66 27 69 6c 6c 75 6d | 20 3d 20 61 6d 62 69 65 |if'illum| = ambie|
|000036a0| 6e 74 4c 65 76 65 6c 20 | 2b 20 64 6f 74 2a 64 69 |ntLevel |+ dot*di|
|000036b0| 66 66 75 73 65 4c 65 76 | 65 6c 3d 63 6f 6c 6f 72 |ffuseLev|el=color|
|000036c0| 69 20 3d 20 52 47 42 28 | 69 6c 6c 75 6d 2a 66 61 |i = RGB(|illum*fa|
|000036d0| 63 65 69 2e 63 72 2c 20 | 69 6c 6c 75 6d 2a 66 61 |cei.cr, |illum*fa|
|000036e0| 63 65 69 2e 63 67 2c 20 | 69 6c 6c 75 6d 2a 66 61 |cei.cg, |illum*fa|
|000036f0| 63 65 69 2e 63 62 29 20 | 04 65 6c 73 65 0e 63 6f |cei.cb) |.else.co|
|00003700| 6c 6f 72 69 20 3d 20 67 | 72 28 69 29 06 65 6e 64 |lori = g|r(i).end|
|00003710| 20 69 66 14 67 2e 46 6f | 72 65 43 6f 6c 6f 72 20 | if.g.Fo|reColor |
|00003720| 3d 20 63 6f 6c 6f 72 69 | 25 67 2e 46 69 6c 6c 50 |= colori|%g.FillP|
|00003730| 6f 6c 79 67 6f 6e 28 76 | 78 79 29 20 20 2f 2f 20 |olygon(v|xy) // |
|00003740| 64 72 61 77 20 65 61 63 | 68 20 66 61 63 65 14 67 |draw eac|h face.g|
|00003750| 2e 46 6f 72 65 43 6f 6c | 6f 72 20 3d 20 6b 42 4c |.ForeCol|or = kBL|
|00003760| 41 43 4b 04 65 6c 73 65 | 14 67 2e 46 6f 72 65 43 |ACK.else|.g.ForeC|
|00003770| 6f 6c 6f 72 20 3d 20 6b | 57 48 49 54 45 06 65 6e |olor = k|WHITE.en|
|00003780| 64 20 69 66 00 21 69 66 | 20 70 45 64 67 65 73 20 |d if.!if| pEdges |
|00003790| 4f 52 20 66 61 63 65 53 | 65 6c 65 63 74 65 64 28 |OR faceS|elected(|
|000037a0| 69 29 20 74 68 65 6e 1b | 69 66 20 4e 4f 54 20 66 |i) then.|if NOT f|
|000037b0| 61 63 65 53 65 6c 65 63 | 74 65 64 28 69 29 20 74 |aceSelec|ted(i) t|
|000037c0| 68 65 6e 2a 67 2e 44 72 | 61 77 50 6f 6c 79 67 6f |hen*g.Dr|awPolygo|
|000037d0| 6e 28 76 78 79 29 20 20 | 2f 2f 20 64 72 61 77 20 |n(vxy) |// draw |
|000037e0| 74 68 65 20 66 61 63 65 | 20 65 64 67 65 73 04 65 |the face| edges.e|
|000037f0| 6c 73 65 0e 69 66 20 70 | 45 64 67 65 73 20 74 68 |lse.if p|Edges th|
|00003800| 65 6e 0e 67 2e 50 65 6e | 57 69 64 74 68 20 3d 20 |en.g.Pen|Width = |
|00003810| 32 0f 67 2e 50 65 6e 48 | 65 69 67 68 74 20 3d 20 |2.g.PenH|eight = |
|00003820| 32 2a 67 2e 44 72 61 77 | 50 6f 6c 79 67 6f 6e 28 |2*g.Draw|Polygon(|
|00003830| 76 78 79 29 20 20 2f 2f | 20 64 72 61 77 20 74 68 |vxy) //| draw th|
|00003840| 65 20 66 61 63 65 20 65 | 64 67 65 73 0e 67 2e 50 |e face e|dges.g.P|
|00003850| 65 6e 57 69 64 74 68 20 | 3d 20 31 0f 67 2e 50 65 |enWidth |= 1.g.Pe|
|00003860| 6e 48 65 69 67 68 74 20 | 3d 20 31 04 65 6c 73 65 |nHeight |= 1.else|
|00003870| 2a 67 2e 44 72 61 77 50 | 6f 6c 79 67 6f 6e 28 76 |*g.DrawP|olygon(v|
|00003880| 78 79 29 20 20 2f 2f 20 | 64 72 61 77 20 74 68 65 |xy) // |draw the|
|00003890| 20 66 61 63 65 20 65 64 | 67 65 73 06 65 6e 64 20 | face ed|ges.end |
|000038a0| 69 66 06 65 6e 64 20 69 | 66 06 65 6e 64 20 69 66 |if.end i|f.end if|
|000038b0| 00 04 6e 65 78 74 00 07 | 45 6e 64 20 53 75 62 04 |..next..|End Sub.|
|000038c0| 50 69 63 6b 1a 78 20 61 | 73 20 69 6e 74 65 67 65 |Pick.x a|s intege|
|000038d0| 72 2c 20 79 20 61 73 20 | 69 6e 74 65 67 65 72 07 |r, y as |integer.|
|000038e0| 69 6e 74 65 67 65 72 00 | 0f 36 0f 36 36 34 46 75 |integer.|.6.664Fu|
|000038f0| 6e 63 74 69 6f 6e 20 50 | 69 63 6b 28 78 20 61 73 |nction P|ick(x as|
|00003900| 20 69 6e 74 65 67 65 72 | 2c 20 79 20 61 73 20 69 | integer|, y as i|
|00003910| 6e 74 65 67 65 72 29 20 | 41 73 20 69 6e 74 65 67 |nteger) |As integ|
|00003920| 65 72 39 2f 2f 20 46 69 | 6e 64 20 74 68 65 20 74 |er9// Fi|nd the t|
|00003930| 6f 70 6d 6f 73 74 20 70 | 6f 6c 79 67 6f 6e 20 74 |opmost p|olygon t|
|00003940| 68 61 74 20 63 6f 6e 74 | 61 69 6e 73 20 74 68 65 |hat cont|ains the|
|00003950| 20 70 6f 69 6e 74 20 28 | 78 2c 79 29 3c 2f 2f 20 | point (|x,y)<// |
|00003960| 54 6f 20 64 65 74 65 72 | 6d 69 6e 65 20 77 68 65 |To deter|mine whe|
|00003970| 74 68 65 72 20 74 68 65 | 20 70 6f 69 6e 74 20 6c |ther the| point l|
|00003980| 69 65 73 20 69 6e 20 61 | 6e 79 20 67 69 76 65 6e |ies in a|ny given|
|00003990| 20 70 6f 6c 79 67 6f 6e | 2c 37 2f 2f 20 77 65 20 | polygon|,7// we |
|000039a0| 75 73 65 20 74 68 65 20 | 72 61 79 2d 63 72 6f 73 |use the |ray-cros|
|000039b0| 73 69 6e 67 20 61 6c 67 | 6f 72 69 74 68 6d 20 72 |sing alg|orithm r|
|000039c0| 65 63 6f 6d 6d 65 6e 64 | 65 64 20 69 6e 20 74 68 |ecommend|ed in th|
|000039d0| 65 35 2f 2f 20 63 6f 6d | 70 2e 67 72 61 70 68 69 |e5// com|p.graphi|
|000039e0| 63 73 2e 61 6c 67 6f 72 | 69 74 68 6d 73 20 46 41 |cs.algor|ithms FA|
|000039f0| 51 2c 20 77 68 69 63 68 | 20 74 68 65 79 20 63 72 |Q, which| they cr|
|00003a00| 65 64 69 74 20 74 6f 2d | 2f 2f 20 45 72 69 63 20 |edit to-|// Eric |
|00003a10| 48 61 69 6e 65 73 20 5b | 47 72 61 70 68 69 63 73 |Haines [|Graphics|
|00003a20| 20 47 65 6d 73 20 49 56 | 5d 20 20 70 70 2e 20 32 | Gems IV|] pp. 2|
|00003a30| 34 2d 34 36 2e 02 2f 2f | 26 64 69 6d 20 69 2c 20 |4-46..//|&dim i, |
|00003a40| 6a 2c 20 6b 2c 20 6e 2c | 20 66 2c 20 76 2c 20 66 |j, k, n,| f, v, f|
|00003a50| 70 69 63 6b 20 61 73 20 | 69 6e 74 65 67 65 72 29 |pick as |integer)|
|00003a60| 64 69 6d 20 78 69 2c 20 | 79 69 2c 20 78 6a 2c 20 |dim xi, |yi, xj, |
|00003a70| 79 6a 2c 20 78 6d 69 6e | 2c 20 78 6d 61 78 20 61 |yj, xmin|, xmax a|
|00003a80| 73 20 69 6e 74 65 67 65 | 72 17 64 69 6d 20 65 6e |s intege|r.dim en|
|00003a90| 63 6c 6f 73 65 64 20 61 | 73 20 42 6f 6f 6c 65 61 |closed a|s Boolea|
|00003aa0| 6e 11 64 69 6d 20 66 61 | 63 65 69 20 61 73 20 46 |n.dim fa|cei as F|
|00003ab0| 61 63 65 00 0a 66 70 69 | 63 6b 20 3d 20 2d 31 00 |ace..fpi|ck = -1.|
|00003ac0| 34 2f 2f 20 46 61 63 65 | 73 20 61 72 65 20 61 6c |4// Face|s are al|
|00003ad0| 72 65 61 64 79 20 73 6f | 72 74 65 64 20 62 79 20 |ready so|rted by |
|00003ae0| 64 65 70 74 68 2c 20 73 | 6f 20 73 65 61 72 63 68 |depth, s|o search|
|00003af0| 20 66 72 6f 6d 36 2f 2f | 20 66 72 6f 6e 74 20 74 | from6//| front t|
|00003b00| 6f 20 62 61 63 6b 20 61 | 6e 64 20 74 61 6b 65 20 |o back a|nd take |
|00003b10| 74 68 65 20 66 69 72 73 | 74 20 65 6e 63 6c 6f 73 |the firs|t enclos|
|00003b20| 69 6e 67 20 70 6f 6c 79 | 67 6f 6e 2e 19 66 6f 72 |ing poly|gon..for|
|00003b30| 20 66 20 3d 20 6e 66 61 | 63 65 73 2d 31 20 64 6f | f = nfa|ces-1 do|
|00003b40| 77 6e 74 6f 20 30 17 66 | 61 63 65 69 20 3d 20 66 |wnto 0.f|acei = f|
|00003b50| 61 63 65 28 66 69 6e 64 | 65 78 28 66 29 29 00 12 |ace(find|ex(f))..|
|00003b60| 6e 20 3d 20 66 61 63 65 | 69 2e 6e 76 65 72 74 73 |n = face|i.nverts|
|00003b70| 2d 31 1a 78 6a 20 3d 20 | 74 76 65 72 74 28 66 61 |-1.xj = |tvert(fa|
|00003b80| 63 65 69 2e 69 6e 64 65 | 78 28 6e 29 29 1c 79 6a |cei.inde|x(n)).yj|
|00003b90| 20 3d 20 74 76 65 72 74 | 28 66 61 63 65 69 2e 69 | = tvert|(facei.i|
|00003ba0| 6e 64 65 78 28 6e 29 2b | 31 29 09 78 6d 69 6e 20 |ndex(n)+|1).xmin |
|00003bb0| 3d 20 78 6a 09 78 6d 61 | 78 20 3d 20 78 6a 10 65 |= xj.xma|x = xj.e|
|00003bc0| 6e 63 6c 6f 73 65 64 20 | 3d 20 46 41 4c 53 45 0e |nclosed |= FALSE.|
|00003bd0| 66 6f 72 20 76 20 3d 20 | 30 20 74 6f 20 6e 1a 78 |for v = |0 to n.x|
|00003be0| 69 20 3d 20 74 76 65 72 | 74 28 66 61 63 65 69 2e |i = tver|t(facei.|
|00003bf0| 69 6e 64 65 78 28 76 29 | 29 1c 79 69 20 3d 20 74 |index(v)|).yi = t|
|00003c00| 76 65 72 74 28 66 61 63 | 65 69 2e 69 6e 64 65 78 |vert(fac|ei.index|
|00003c10| 28 76 29 2b 31 29 92 01 | 69 66 20 28 28 79 69 3c |(v)+1)..|if ((yi<|
|00003c20| 79 20 41 4e 44 20 79 3c | 79 6a 29 20 4f 52 20 28 |y AND y<|yj) OR (|
|00003c30| 79 6a 3c 79 20 41 4e 44 | 20 79 3c 79 69 29 29 20 |yj<y AND| y<yi)) |
|00003c40| 41 4e 44 20 28 78 20 3c | 20 78 69 20 2b 20 28 78 |AND (x <| xi + (x|
|00003c50| 6a 2d 78 69 29 2a 28 79 | 2d 79 69 29 2f 28 79 6a |j-xi)*(y|-yi)/(yj|
|00003c60| 2d 79 69 29 29 20 74 68 | 65 6e 17 65 6e 63 6c 6f |-yi)) th|en.enclo|
|00003c70| 73 65 64 20 3d 20 4e 4f | 54 20 65 6e 63 6c 6f 73 |sed = NO|T enclos|
|00003c80| 65 64 06 65 6e 64 20 69 | 66 07 78 6a 20 3d 20 78 |ed.end i|f.xj = x|
|00003c90| 69 07 79 6a 20 3d 20 79 | 69 00 11 69 66 20 78 69 |i.yj = y|i..if xi|
|00003ca0| 20 3c 20 78 6d 69 6e 20 | 74 68 65 6e 09 78 6d 69 | < xmin |then.xmi|
|00003cb0| 6e 20 3d 20 78 69 16 65 | 6c 73 65 69 66 20 78 69 |n = xi.e|lseif xi|
|00003cc0| 20 3e 20 78 6d 61 78 20 | 74 68 65 6e 20 09 78 6d | > xmax |then .xm|
|00003cd0| 61 78 20 3d 20 78 69 06 | 65 6e 64 20 69 66 04 6e |ax = xi.|end if.n|
|00003ce0| 65 78 74 00 30 2f 2f 20 | 43 68 65 63 6b 20 74 68 |ext.0// |Check th|
|00003cf0| 61 74 20 74 68 65 20 70 | 6f 69 6e 74 20 61 63 74 |at the p|oint act|
|00003d00| 75 61 6c 6c 79 20 6c 69 | 65 73 20 77 69 74 68 69 |ually li|es withi|
|00003d10| 6e 20 74 68 65 3c 2f 2f | 20 78 2d 62 6f 75 6e 64 |n the<//| x-bound|
|00003d20| 73 20 6f 66 20 74 68 65 | 20 70 6f 6c 79 67 6f 6e |s of the| polygon|
|00003d30| 2c 20 73 69 6e 63 65 20 | 74 68 65 20 72 61 79 2d |, since |the ray-|
|00003d40| 63 72 6f 73 73 69 6e 67 | 20 61 6c 67 6f 72 69 74 |crossing| algorit|
|00003d50| 68 6d 17 2f 2f 20 64 6f | 65 73 6e 27 74 20 61 73 |hm.// do|esn't as|
|00003d60| 73 75 72 65 20 74 68 69 | 73 2e 2c 69 66 20 65 6e |sure thi|s.,if en|
|00003d70| 63 6c 6f 73 65 64 20 41 | 4e 44 20 78 20 3e 3d 20 |closed A|ND x >= |
|00003d80| 78 6d 69 6e 20 41 4e 44 | 20 78 20 3c 3d 20 78 6d |xmin AND| x <= xm|
|00003d90| 61 78 20 74 68 65 6e 11 | 66 70 69 63 6b 20 3d 20 |ax then.|fpick = |
|00003da0| 66 69 6e 64 65 78 28 66 | 29 04 65 78 69 74 07 65 |findex(f|).exit.e|
|00003db0| 6e 64 20 69 66 20 00 04 | 6e 65 78 74 00 0c 72 65 |nd if ..|next..re|
|00003dc0| 74 75 72 6e 20 66 70 69 | 63 6b 00 0c 45 6e 64 20 |turn fpi|ck..End |
|00003dd0| 46 75 6e 63 74 69 6f 6e | 0b 44 65 73 65 6c 65 63 |Function|.Deselec|
|00003de0| 74 41 6c 6c 00 00 00 04 | 09 04 09 09 11 53 75 62 |tAll....|.....Sub|
|00003df0| 20 44 65 73 65 6c 65 63 | 74 41 6c 6c 28 29 13 64 | Deselec|tAll().d|
|00003e00| 69 6d 20 69 2c 20 6e 20 | 61 73 20 69 6e 74 65 67 |im i, n |as integ|
|00003e10| 65 72 00 18 6e 20 3d 20 | 55 62 6f 75 6e 64 28 66 |er..n = |Ubound(f|
|00003e20| 61 63 65 53 65 6c 65 63 | 74 65 64 29 0e 66 6f 72 |aceSelec|ted).for|
|00003e30| 20 69 20 3d 20 30 20 74 | 6f 20 6e 17 66 61 63 65 | i = 0 t|o n.face|
|00003e40| 53 65 6c 65 63 74 65 64 | 28 69 29 20 3d 20 46 41 |Selected|(i) = FA|
|00003e50| 4c 53 45 04 6e 65 78 74 | 00 07 45 6e 64 20 53 75 |LSE.next|..End Su|
|00003e60| 62 0b 57 72 69 74 65 53 | 74 72 65 61 6d 17 74 6f |b.WriteS|tream.to|
|00003e70| 73 20 61 73 20 54 65 78 | 74 4f 75 74 70 75 74 53 |s as Tex|tOutputS|
|00003e80| 74 72 65 61 6d 00 00 0b | 3a 0b 3a 1f 28 53 75 62 |tream...|:.:.(Sub|
|00003e90| 20 57 72 69 74 65 53 74 | 72 65 61 6d 28 74 6f 73 | WriteSt|ream(tos|
|00003ea0| 20 61 73 20 54 65 78 74 | 4f 75 74 70 75 74 53 74 | as Text|OutputSt|
|00003eb0| 72 65 61 6d 29 36 2f 2f | 20 54 68 69 73 20 6d 65 |ream)6//| This me|
|00003ec0| 74 68 6f 64 20 77 72 69 | 74 65 73 20 61 6e 20 4f |thod wri|tes an O|
|00003ed0| 46 46 20 66 69 6c 65 20 | 74 6f 20 74 68 65 20 6f |FF file |to the o|
|00003ee0| 75 74 70 75 74 20 73 74 | 72 65 61 6d 30 64 69 6d |utput st|ream0dim|
|00003ef0| 20 69 2c 20 6a 2c 20 6e | 2c 20 74 74 2c 20 6e 75 | i, j, n|, tt, nu|
|00003f00| 6d 2c 20 63 6f 6f 72 64 | 6e 75 6d 2c 20 74 74 79 |m, coord|num, tty|
|00003f10| 70 65 20 61 73 20 69 6e | 74 65 67 65 72 0d 64 69 |pe as in|teger.di|
|00003f20| 6d 20 66 20 61 73 20 46 | 61 63 65 00 13 74 6f 73 |m f as F|ace..tos|
|00003f30| 2e 57 72 69 74 65 4c 69 | 6e 65 20 22 4f 46 46 22 |.WriteLi|ne "OFF"|
|00003f40| 81 01 74 6f 73 2e 57 72 | 69 74 65 4c 69 6e 65 20 |..tos.Wr|iteLine |
|00003f50| 53 74 72 28 6e 76 65 72 | 74 73 29 20 2b 20 22 20 |Str(nver|ts) + " |
|00003f60| 22 20 2b 20 53 74 72 28 | 6e 66 61 63 65 73 29 20 |" + Str(|nfaces) |
|00003f70| 2b 20 22 20 22 20 2b 20 | 53 74 72 28 6e 65 64 67 |+ " " + |Str(nedg|
|00003f80| 65 73 29 10 74 6f 73 2e | 57 72 69 74 65 4c 69 6e |es).tos.|WriteLin|
|00003f90| 65 20 22 22 00 17 66 6f | 72 20 6e 75 6d 20 3d 20 |e ""..fo|r num = |
|00003fa0| 30 20 74 6f 20 6e 76 65 | 72 74 73 2d 31 09 69 20 |0 to nve|rts-1.i |
|00003fb0| 3d 20 6e 75 6d 2a 33 88 | 01 74 6f 73 2e 57 72 69 |= num*3.|.tos.Wri|
|00003fc0| 74 65 4c 69 6e 65 20 53 | 74 72 28 76 65 72 74 28 |teLine S|tr(vert(|
|00003fd0| 69 29 29 20 2b 20 22 20 | 22 20 2b 20 53 74 72 28 |i)) + " |" + Str(|
|00003fe0| 76 65 72 74 28 69 2b 31 | 29 29 20 2b 20 22 20 22 |vert(i+1|)) + " "|
|00003ff0| 20 2b 20 53 74 72 28 76 | 65 72 74 28 69 2b 32 29 | + Str(v|ert(i+2)|
|00004000| 29 04 6e 65 78 74 10 74 | 6f 73 2e 57 72 69 74 65 |).next.t|os.Write|
|00004010| 4c 69 6e 65 20 22 22 00 | 17 66 6f 72 20 6e 75 6d |Line "".|.for num|
|00004020| 20 3d 20 30 20 74 6f 20 | 6e 66 61 63 65 73 2d 31 | = 0 to |nfaces-1|
|00004030| 0d 66 20 3d 20 66 61 63 | 65 28 6e 75 6d 29 1d 74 |.f = fac|e(num).t|
|00004040| 6f 73 2e 57 72 69 74 65 | 20 53 74 72 28 66 2e 6e |os.Write| Str(f.n|
|00004050| 76 65 72 74 73 29 20 2b | 20 22 20 22 17 66 6f 72 |verts) +| " ".for|
|00004060| 20 69 20 3d 20 30 20 74 | 6f 20 66 2e 6e 76 65 72 | i = 0 t|o f.nver|
|00004070| 74 73 2d 31 28 74 6f 73 | 2e 57 72 69 74 65 20 53 |ts-1(tos|.Write S|
|00004080| 74 72 28 52 6f 75 6e 64 | 28 66 2e 69 6e 64 65 78 |tr(Round|(f.index|
|00004090| 28 69 29 2f 33 29 29 20 | 2b 20 22 20 22 04 6e 65 |(i)/3)) |+ " ".ne|
|000040a0| 78 74 31 69 66 20 66 2e | 63 72 20 3c 3e 20 32 35 |xt1if f.|cr <> 25|
|000040b0| 35 20 4f 52 20 66 2e 63 | 67 20 3c 3e 20 32 35 35 |5 OR f.c|g <> 255|
|000040c0| 20 4f 52 20 66 2e 63 62 | 20 3c 3e 20 32 35 35 20 | OR f.cb| <> 255 |
|000040d0| 74 68 65 6e 89 01 74 6f | 73 2e 57 72 69 74 65 20 |then..to|s.Write |
|000040e0| 22 20 22 20 2b 20 53 74 | 72 28 66 2e 63 72 2f 32 |" " + St|r(f.cr/2|
|000040f0| 35 35 29 20 2b 20 22 20 | 22 20 2b 20 53 74 72 28 |55) + " |" + Str(|
|00004100| 66 2e 63 67 2f 32 35 35 | 29 20 2b 20 22 20 22 20 |f.cg/255|) + " " |
|00004110| 2b 20 53 74 72 28 66 2e | 63 62 2f 32 35 35 29 06 |+ Str(f.|cb/255).|
|00004120| 65 6e 64 20 69 66 10 74 | 6f 73 2e 57 72 69 74 65 |end if.t|os.Write|
|00004130| 4c 69 6e 65 20 22 22 04 | 6e 65 78 74 10 74 6f 73 |Line "".|next.tos|
|00004140| 2e 57 72 69 74 65 4c 69 | 6e 65 20 22 22 00 06 72 |.WriteLi|ne ""..r|
|00004150| 65 74 75 72 6e 00 07 45 | 6e 64 20 53 75 62 0a 47 |eturn..E|nd Sub.G|
|00004160| 65 74 4e 6f 72 6d 61 6c | 73 00 00 00 27 0c 27 0c |etNormal|s...'.'.|
|00004170| 2d 10 53 75 62 20 47 65 | 74 4e 6f 72 6d 61 6c 73 |-.Sub Ge|tNormals|
|00004180| 28 29 2c 2f 2f 20 43 61 | 6c 63 75 6c 61 74 65 20 |(),// Ca|lculate |
|00004190| 74 68 65 20 6e 6f 72 6d | 61 6c 20 76 65 63 74 6f |the norm|al vecto|
|000041a0| 72 20 66 6f 72 20 65 61 | 63 68 20 66 61 63 65 2b |r for ea|ch face+|
|000041b0| 2f 2f 20 28 6f 6e 6c 79 | 20 74 68 65 20 66 69 72 |// (only| the fir|
|000041c0| 73 74 20 74 68 72 65 65 | 20 76 65 72 74 69 63 65 |st three| vertice|
|000041d0| 73 20 61 72 65 20 75 73 | 65 64 29 03 2f 2f 20 25 |s are us|ed).// %|
|000041e0| 64 69 6d 20 69 2c 20 6b | 2c 20 69 76 2c 20 6a 76 |dim i, k|, iv, jv|
|000041f0| 2c 20 6b 76 2c 20 66 2c | 20 76 20 61 73 20 69 6e |, kv, f,| v as in|
|00004200| 74 65 67 65 72 28 64 69 | 6d 20 78 31 2c 20 79 31 |teger(di|m x1, y1|
|00004210| 2c 20 7a 31 2c 20 78 32 | 2c 20 79 32 2c 20 7a 32 |, z1, x2|, y2, z2|
|00004220| 2c 20 72 6e 20 61 73 20 | 64 6f 75 62 6c 65 11 64 |, rn as |double.d|
|00004230| 69 6d 20 66 61 63 65 69 | 20 61 73 20 46 61 63 65 |im facei| as Face|
|00004240| 00 27 69 66 20 55 62 6f | 75 6e 64 28 76 65 72 74 |.'if Ubo|und(vert|
|00004250| 29 20 3d 20 30 20 4f 52 | 20 6e 76 65 72 74 73 20 |) = 0 OR| nverts |
|00004260| 3c 3d 20 30 20 74 68 65 | 6e 06 72 65 74 75 72 6e |<= 0 the|n.return|
|00004270| 06 65 6e 64 20 69 66 00 | 1d 23 70 72 61 67 6d 61 |.end if.|.#pragma|
|00004280| 20 64 69 73 61 62 6c 65 | 42 6f 75 6e 64 73 43 68 | disable|BoundsCh|
|00004290| 65 63 6b 69 6e 67 1e 23 | 70 72 61 67 6d 61 20 64 |ecking.#|pragma d|
|000042a0| 69 73 61 62 6c 65 42 61 | 63 6b 67 72 6f 75 6e 64 |isableBa|ckground|
|000042b0| 54 61 73 6b 73 00 15 66 | 6f 72 20 69 20 3d 20 30 |Tasks..f|or i = 0|
|000042c0| 20 74 6f 20 6e 66 61 63 | 65 73 2d 31 0f 66 61 63 | to nfac|es-1.fac|
|000042d0| 65 69 20 3d 20 66 61 63 | 65 28 69 29 00 13 69 76 |ei = fac|e(i)..iv|
|000042e0| 20 3d 20 66 61 63 65 69 | 2e 69 6e 64 65 78 28 30 | = facei|.index(0|
|000042f0| 29 13 6a 76 20 3d 20 66 | 61 63 65 69 2e 69 6e 64 |).jv = f|acei.ind|
|00004300| 65 78 28 31 29 13 6b 76 | 20 3d 20 66 61 63 65 69 |ex(1).kv| = facei|
|00004310| 2e 69 6e 64 65 78 28 32 | 29 00 16 78 31 20 3d 20 |.index(2|)..x1 = |
|00004320| 76 65 72 74 28 6a 76 29 | 2d 76 65 72 74 28 69 76 |vert(jv)|-vert(iv|
|00004330| 29 1a 79 31 20 3d 20 76 | 65 72 74 28 6a 76 2b 31 |).y1 = v|ert(jv+1|
|00004340| 29 2d 76 65 72 74 28 69 | 76 2b 31 29 1a 7a 31 20 |)-vert(i|v+1).z1 |
|00004350| 3d 20 76 65 72 74 28 6a | 76 2b 32 29 2d 76 65 72 |= vert(j|v+2)-ver|
|00004360| 74 28 69 76 2b 32 29 00 | 16 78 32 20 3d 20 76 65 |t(iv+2).|.x2 = ve|
|00004370| 72 74 28 6b 76 29 2d 76 | 65 72 74 28 6a 76 29 1a |rt(kv)-v|ert(jv).|
|00004380| 79 32 20 3d 20 76 65 72 | 74 28 6b 76 2b 31 29 2d |y2 = ver|t(kv+1)-|
|00004390| 76 65 72 74 28 6a 76 2b | 31 29 1a 7a 32 20 3d 20 |vert(jv+|1).z2 = |
|000043a0| 76 65 72 74 28 6b 76 2b | 32 29 2d 76 65 72 74 28 |vert(kv+|2)-vert(|
|000043b0| 6a 76 2b 32 29 00 18 66 | 61 63 65 69 2e 78 6e 20 |jv+2)..f|acei.xn |
|000043c0| 3d 20 79 31 2a 7a 32 20 | 2d 20 79 32 2a 7a 31 18 |= y1*z2 |- y2*z1.|
|000043d0| 66 61 63 65 69 2e 79 6e | 20 3d 20 7a 31 2a 78 32 |facei.yn| = z1*x2|
|000043e0| 20 2d 20 7a 32 2a 78 31 | 18 66 61 63 65 69 2e 7a | - z2*x1|.facei.z|
|000043f0| 6e 20 3d 20 78 31 2a 79 | 32 20 2d 20 78 32 2a 79 |n = x1*y|2 - x2*y|
|00004400| 31 00 3e 72 6e 20 3d 20 | 66 61 63 65 69 2e 78 6e |1.>rn = |facei.xn|
|00004410| 2a 66 61 63 65 69 2e 78 | 6e 20 2b 20 66 61 63 65 |*facei.x|n + face|
|00004420| 69 2e 79 6e 2a 66 61 63 | 65 69 2e 79 6e 20 2b 20 |i.yn*fac|ei.yn + |
|00004430| 66 61 63 65 69 2e 7a 6e | 2a 66 61 63 65 69 2e 7a |facei.zn|*facei.z|
|00004440| 6e 0e 69 66 20 72 6e 20 | 3e 20 30 20 74 68 65 6e |n.if rn |> 0 then|
|00004450| 0d 72 6e 20 3d 20 73 71 | 72 74 28 72 6e 29 16 66 |.rn = sq|rt(rn).f|
|00004460| 61 63 65 69 2e 78 6e 20 | 3d 20 66 61 63 65 69 2e |acei.xn |= facei.|
|00004470| 78 6e 2f 72 6e 16 66 61 | 63 65 69 2e 79 6e 20 3d |xn/rn.fa|cei.yn =|
|00004480| 20 66 61 63 65 69 2e 79 | 6e 2f 72 6e 17 66 61 63 | facei.y|n/rn.fac|
|00004490| 65 69 2e 7a 6e 20 3d 20 | 20 66 61 63 65 69 2e 7a |ei.zn = | facei.z|
|000044a0| 6e 2f 72 6e 06 65 6e 64 | 20 69 66 00 04 6e 65 78 |n/rn.end| if..nex|
|000044b0| 74 00 07 45 6e 64 20 53 | 75 62 00 00 00 00 00 04 |t..End S|ub......|
|000044c0| 41 05 43 6c 61 73 73 04 | 46 61 63 65 8a 04 82 03 |A.Class.|Face....|
|000044d0| 9a 0a ae 07 07 00 04 46 | 61 63 65 98 01 00 00 09 |.......F|ace.....|
|000044e0| 11 6e 76 65 72 74 73 20 | 61 73 20 69 6e 74 65 67 |.nverts |as integ|
|000044f0| 65 72 00 13 69 6e 64 65 | 78 28 30 29 20 61 73 20 |er..inde|x(0) as |
|00004500| 69 6e 74 65 67 65 72 00 | 0c 63 72 20 61 73 20 64 |integer.|.cr as d|
|00004510| 6f 75 62 6c 65 00 0c 63 | 67 20 61 73 20 64 6f 75 |ouble..c|g as dou|
|00004520| 62 6c 65 00 0c 63 62 20 | 61 73 20 64 6f 75 62 6c |ble..cb |as doubl|
|00004530| 65 00 10 7a 64 65 70 74 | 68 20 61 73 20 64 6f 75 |e..zdept|h as dou|
|00004540| 62 6c 65 00 0c 79 6e 20 | 61 73 20 64 6f 75 62 6c |ble..yn |as doubl|
|00004550| 65 00 0c 78 6e 20 61 73 | 20 64 6f 75 62 6c 65 00 |e..xn as| double.|
|00004560| 0c 7a 6e 20 61 73 20 64 | 6f 75 62 6c 65 00 03 04 |.zn as d|ouble...|
|00004570| 46 61 63 65 00 00 00 01 | 00 08 00 0a 0a 53 75 62 |Face....|.....Sub|
|00004580| 20 46 61 63 65 28 29 00 | 0a 6e 76 65 72 74 73 20 | Face().|.nverts |
|00004590| 3d 20 30 0e 72 65 64 69 | 6d 20 69 6e 64 65 78 28 |= 0.redi|m index(|
|000045a0| 30 29 00 08 63 72 20 3d | 20 32 35 35 08 63 67 20 |0)..cr =| 255.cg |
|000045b0| 3d 20 32 35 35 08 63 62 | 20 3d 20 32 35 35 00 07 |= 255.cb| = 255..|
|000045c0| 45 6e 64 20 53 75 62 04 | 46 61 63 65 0d 6e 76 20 |End Sub.|Face.nv |
|000045d0| 61 73 20 69 6e 74 65 67 | 65 72 00 00 01 00 04 00 |as integ|er......|
|000045e0| 0a 17 53 75 62 20 46 61 | 63 65 28 6e 76 20 61 73 |..Sub Fa|ce(nv as|
|000045f0| 20 69 6e 74 65 67 65 72 | 29 00 0b 6e 76 65 72 74 | integer|)..nvert|
|00004600| 73 20 3d 20 6e 76 0f 72 | 65 64 69 6d 20 69 6e 64 |s = nv.r|edim ind|
|00004610| 65 78 28 6e 76 29 00 08 | 63 72 20 3d 20 32 35 35 |ex(nv)..|cr = 255|
|00004620| 08 63 67 20 3d 20 32 35 | 35 08 63 62 20 3d 20 32 |.cg = 25|5.cb = 2|
|00004630| 35 35 00 07 45 6e 64 20 | 53 75 62 08 4e 75 6d 56 |55..End |Sub.NumV|
|00004640| 65 72 74 73 0d 6e 76 20 | 61 73 20 69 6e 74 65 67 |erts.nv |as integ|
|00004650| 65 72 00 00 04 00 04 00 | 06 1b 53 75 62 20 4e 75 |er......|..Sub Nu|
|00004660| 6d 56 65 72 74 73 28 6e | 76 20 61 73 20 69 6e 74 |mVerts(n|v as int|
|00004670| 65 67 65 72 29 00 0b 6e | 76 65 72 74 73 20 3d 20 |eger)..n|verts = |
|00004680| 6e 76 0f 72 65 64 69 6d | 20 69 6e 64 65 78 28 6e |nv.redim| index(n|
|00004690| 76 29 00 07 45 6e 64 20 | 53 75 62 00 00 00 00 00 |v)..End |Sub.....|
|000046a0| 05 41 05 43 6c 61 73 73 | 08 4d 61 74 72 69 78 33 |.A.Class|.Matrix3|
|000046b0| 44 31 b9 01 ac 0b 85 08 | 07 00 08 4d 61 74 72 69 |D1......|...Matri|
|000046c0| 78 33 44 90 02 00 00 0f | 0c 78 6f 20 61 73 20 64 |x3D.....|.xo as d|
|000046d0| 6f 75 62 6c 65 00 0c 79 | 6f 20 61 73 20 64 6f 75 |ouble..y|o as dou|
|000046e0| 62 6c 65 00 0c 7a 6f 20 | 61 73 20 64 6f 75 62 6c |ble..zo |as doubl|
|000046f0| 65 00 0c 78 78 20 61 73 | 20 64 6f 75 62 6c 65 00 |e..xx as| double.|
|00004700| 0c 78 79 20 61 73 20 64 | 6f 75 62 6c 65 00 0c 78 |.xy as d|ouble..x|
|00004710| 7a 20 61 73 20 64 6f 75 | 62 6c 65 00 0c 79 78 20 |z as dou|ble..yx |
|00004720| 61 73 20 64 6f 75 62 6c | 65 00 0c 79 79 20 61 73 |as doubl|e..yy as|
|00004730| 20 64 6f 75 62 6c 65 00 | 0c 79 7a 20 61 73 20 64 | double.|.yz as d|
|00004740| 6f 75 62 6c 65 00 0c 7a | 78 20 61 73 20 64 6f 75 |ouble..z|x as dou|
|00004750| 62 6c 65 00 0c 7a 79 20 | 61 73 20 64 6f 75 62 6c |ble..zy |as doubl|
|00004760| 65 00 0c 7a 7a 20 61 73 | 20 64 6f 75 62 6c 65 00 |e..zz as| double.|
|00004770| 0c 50 69 20 61 73 20 64 | 6f 75 62 6c 65 01 11 52 |.Pi as d|ouble..R|
|00004780| 61 64 69 61 6e 73 20 61 | 73 20 64 6f 75 62 6c 65 |adians a|s double|
|00004790| 01 11 44 65 67 72 65 65 | 73 20 61 73 20 64 6f 75 |..Degree|s as dou|
|000047a0| 62 6c 65 01 0d 08 4d 61 | 74 72 69 78 33 44 00 00 |ble...Ma|trix3D..|
|000047b0| 00 03 12 03 12 0a 0e 53 | 75 62 20 4d 61 74 72 69 |.......S|ub Matri|
|000047c0| 78 33 44 28 29 3f 2f 2f | 20 43 72 65 61 74 65 20 |x3D()?//| Create |
|000047d0| 20 61 20 6e 65 77 20 74 | 72 61 6e 73 66 6f 72 6d | a new t|ransform|
|000047e0| 61 74 69 6f 6e 20 6d 61 | 74 72 69 78 2c 20 69 6e |ation ma|trix, in|
|000047f0| 69 74 69 61 6c 6c 79 20 | 61 20 75 6e 69 74 20 6d |itially |a unit m|
|00004800| 61 74 72 69 78 00 12 50 | 69 20 3d 20 34 2e 30 2a |atrix..P|i = 4.0*|
|00004810| 41 74 61 6e 28 31 2e 30 | 29 14 52 61 64 69 61 6e |Atan(1.0|).Radian|
|00004820| 73 20 3d 20 31 38 30 2e | 30 20 2f 20 50 69 14 44 |s = 180.|0 / Pi.D|
|00004830| 65 67 72 65 65 73 20 3d | 20 50 69 20 2f 20 31 38 |egrees =| Pi / 18|
|00004840| 30 2e 30 00 04 55 6e 69 | 74 00 07 45 6e 64 20 53 |0.0..Uni|t..End S|
|00004850| 75 62 04 55 6e 69 74 00 | 00 00 02 00 02 00 13 0a |ub.Unit.|........|
|00004860| 53 75 62 20 55 6e 69 74 | 28 29 22 2f 2f 20 52 65 |Sub Unit|()"// Re|
|00004870| 69 6e 69 74 69 61 6c 69 | 7a 65 20 74 6f 20 74 68 |initiali|ze to th|
|00004880| 65 20 75 6e 69 74 20 6d | 61 74 72 69 78 00 06 78 |e unit m|atrix..x|
|00004890| 6f 20 3d 20 30 06 78 78 | 20 3d 20 31 06 78 79 20 |o = 0.xx| = 1.xy |
|000048a0| 3d 20 30 06 78 7a 20 3d | 20 30 00 06 79 6f 20 3d |= 0.xz =| 0..yo =|
|000048b0| 20 30 06 79 78 20 3d 20 | 30 06 79 79 20 3d 20 31 | 0.yx = |0.yy = 1|
|000048c0| 06 79 7a 20 3d 20 30 00 | 06 7a 6f 20 3d 20 30 06 |.yz = 0.|.zo = 0.|
|000048d0| 7a 78 20 3d 20 30 06 7a | 79 20 3d 20 30 06 7a 7a |zx = 0.z|y = 0.zz|
|000048e0| 20 3d 20 31 00 07 45 6e | 64 20 53 75 62 08 54 6f | = 1..En|d Sub.To|
|000048f0| 53 74 72 69 6e 67 00 06 | 53 74 72 69 6e 67 00 03 |String..|String..|
|00004900| 00 03 00 05 1d 46 75 6e | 63 74 69 6f 6e 20 54 6f |.....Fun|ction To|
|00004910| 53 74 72 69 6e 67 28 29 | 20 41 73 20 53 74 72 69 |String()| As Stri|
|00004920| 6e 67 00 8a 03 72 65 74 | 75 72 6e 20 22 5b 22 20 |ng...ret|urn "[" |
|00004930| 2b 20 53 74 72 28 78 6f | 29 20 2b 20 22 2c 22 20 |+ Str(xo|) + "," |
|00004940| 2b 20 53 74 72 28 78 78 | 29 20 2b 20 22 2c 22 20 |+ Str(xx|) + "," |
|00004950| 2b 20 53 74 72 28 78 79 | 29 20 2b 20 22 2c 22 20 |+ Str(xy|) + "," |
|00004960| 2b 20 53 74 72 28 78 7a | 29 20 2b 20 22 3b 22 20 |+ Str(xz|) + ";" |
|00004970| 2b 53 74 72 28 79 6f 29 | 20 2b 20 22 2c 22 20 2b |+Str(yo)| + "," +|
|00004980| 20 53 74 72 28 79 78 29 | 20 2b 20 22 2c 22 20 2b | Str(yx)| + "," +|
|00004990| 20 53 74 72 28 79 79 29 | 20 2b 20 22 2c 22 20 2b | Str(yy)| + "," +|
|000049a0| 20 53 74 72 28 79 7a 29 | 20 2b 20 22 3b 22 20 2b | Str(yz)| + ";" +|
|000049b0| 20 20 53 74 72 28 7a 6f | 29 20 2b 20 22 2c 22 20 | Str(zo|) + "," |
|000049c0| 2b 20 53 74 72 28 7a 78 | 29 20 2b 20 22 2c 22 20 |+ Str(zx|) + "," |
|000049d0| 2b 20 53 74 72 28 7a 79 | 29 20 2b 20 22 2c 22 20 |+ Str(zy|) + "," |
|000049e0| 2b 20 53 74 72 28 7a 7a | 29 20 2b 20 22 5d 22 00 |+ Str(zz|) + "]".|
|000049f0| 0c 45 6e 64 20 46 75 6e | 63 74 69 6f 6e 09 54 72 |.End Fun|ction.Tr|
|00004a00| 61 6e 73 66 6f 72 6d 30 | 76 28 29 20 61 73 20 64 |ansform0|v() as d|
|00004a10| 6f 75 62 6c 65 2c 20 74 | 76 28 29 20 61 73 20 69 |ouble, t|v() as i|
|00004a20| 6e 74 65 67 65 72 2c 20 | 6e 76 65 72 74 20 61 73 |nteger, |nvert as|
|00004a30| 20 69 6e 74 65 67 65 72 | 00 00 14 00 14 00 18 3f | integer|.......?|
|00004a40| 53 75 62 20 54 72 61 6e | 73 66 6f 72 6d 28 76 28 |Sub Tran|sform(v(|
|00004a50| 29 20 61 73 20 64 6f 75 | 62 6c 65 2c 20 74 76 28 |) as dou|ble, tv(|
|00004a60| 29 20 61 73 20 69 6e 74 | 65 67 65 72 2c 20 6e 76 |) as int|eger, nv|
|00004a70| 65 72 74 20 61 73 20 69 | 6e 74 65 67 65 72 29 3f |ert as i|nteger)?|
|00004a80| 2f 2f 20 54 72 61 6e 73 | 66 6f 72 6d 20 6e 76 65 |// Trans|form nve|
|00004a90| 72 74 20 70 6f 69 6e 74 | 73 20 66 72 6f 6d 20 76 |rt point|s from v|
|00004aa0| 20 69 6e 74 6f 20 74 76 | 2e 20 20 76 20 63 6f 6e | into tv|. v con|
|00004ab0| 74 61 69 6e 73 20 74 68 | 65 20 69 6e 70 75 74 3e |tains th|e input>|
|00004ac0| 2f 2f 20 63 6f 6f 72 64 | 69 6e 61 74 65 73 20 69 |// coord|inates i|
|00004ad0| 6e 20 66 6c 6f 61 74 69 | 6e 67 20 70 6f 69 6e 74 |n floati|ng point|
|00004ae0| 2e 20 20 54 68 72 65 65 | 20 73 75 63 63 65 73 73 |. Three| success|
|00004af0| 69 76 65 20 65 6e 74 72 | 69 65 73 20 69 6e 84 01 |ive entr|ies in..|
|00004b00| 2f 2f 20 74 68 65 20 61 | 72 72 61 79 20 63 6f 6e |// the a|rray con|
|00004b10| 73 74 69 74 75 74 65 20 | 61 20 70 6f 69 6e 74 2e |stitute |a point.|
|00004b20| 20 20 74 76 20 65 6e 64 | 73 20 75 70 20 68 6f 6c | tv end|s up hol|
|00004b30| 64 69 6e 67 20 74 68 65 | 20 74 72 61 6e 73 66 6f |ding the| transfo|
|00004b40| 72 6d 65 64 3a 2f 2f 20 | 70 6f 69 6e 74 73 20 61 |rmed:// |points a|
|00004b50| 73 20 69 6e 74 65 67 65 | 72 73 3b 20 74 68 72 65 |s intege|rs; thre|
|00004b60| 65 20 73 75 63 63 65 73 | 73 69 76 65 20 65 6e 74 |e succes|sive ent|
|00004b70| 72 69 65 73 20 70 65 72 | 20 70 6f 69 6e 74 20 19 |ries per| point .|
|00004b80| 64 69 6d 20 78 2c 20 79 | 2c 20 7a 2c 20 7a 64 20 |dim x, y|, z, zd |
|00004b90| 61 73 20 64 6f 75 62 6c | 65 15 64 69 6d 20 69 2c |as doubl|e.dim i,|
|00004ba0| 20 6e 75 6d 20 61 73 20 | 69 6e 74 65 67 65 72 00 | num as |integer.|
|00004bb0| 1e 23 70 72 61 67 6d 61 | 20 64 69 73 61 62 6c 65 |.#pragma| disable|
|00004bc0| 42 61 63 6b 67 72 6f 75 | 6e 64 54 61 73 6b 73 1d |Backgrou|ndTasks.|
|00004bd0| 23 70 72 61 67 6d 61 20 | 64 69 73 61 62 6c 65 42 |#pragma |disableB|
|00004be0| 6f 75 6e 64 73 43 68 65 | 63 6b 69 6e 67 00 16 66 |oundsChe|cking..f|
|00004bf0| 6f 72 20 6e 75 6d 20 3d | 20 30 20 74 6f 20 6e 76 |or num =| 0 to nv|
|00004c00| 65 72 74 2d 31 09 69 20 | 3d 20 6e 75 6d 2a 33 08 |ert-1.i |= num*3.|
|00004c10| 78 20 3d 20 76 28 69 29 | 0a 79 20 3d 20 76 28 69 |x = v(i)|.y = v(i|
|00004c20| 2b 31 29 0a 7a 20 3d 20 | 76 28 69 2b 32 29 00 28 |+1).z = |v(i+2).(|
|00004c30| 74 76 28 69 29 20 20 20 | 3d 20 20 78 20 2a 20 78 |tv(i) |= x * x|
|00004c40| 78 20 2b 20 79 20 2a 20 | 78 79 20 2b 20 7a 20 2a |x + y * |xy + z *|
|00004c50| 20 78 7a 20 2b 20 78 6f | 28 74 76 28 69 2b 31 29 | xz + xo|(tv(i+1)|
|00004c60| 20 3d 20 20 78 20 2a 20 | 79 78 20 2b 20 79 20 2a | = x * |yx + y *|
|00004c70| 20 79 79 20 2b 20 7a 20 | 2a 20 79 7a 20 2b 20 79 | yy + z |* yz + y|
|00004c80| 6f 34 74 76 28 69 2b 32 | 29 20 3d 20 20 28 78 20 |o4tv(i+2|) = (x |
|00004c90| 2a 20 7a 78 20 2b 20 79 | 20 2a 20 7a 79 20 2b 20 |* zx + y| * zy + |
|00004ca0| 7a 20 2a 20 7a 7a 20 2b | 20 7a 6f 29 2a 31 30 30 |z * zz +| zo)*100|
|00004cb0| 30 30 30 30 2e 30 04 6e | 65 78 74 00 00 07 45 6e |0000.0.n|ext...En|
|00004cc0| 64 20 53 75 62 05 41 62 | 6f 75 74 00 06 53 74 72 |d Sub.Ab|out..Str|
|00004cd0| 69 6e 67 00 03 05 03 05 | 0e 1a 46 75 6e 63 74 69 |ing.....|..Functi|
|00004ce0| 6f 6e 20 41 62 6f 75 74 | 28 29 20 41 73 20 53 74 |on About|() As St|
|00004cf0| 72 69 6e 67 87 01 2f 2f | 20 4d 61 74 72 69 78 33 |ring..//| Matrix3|
|00004d00| 44 3a 20 41 20 63 6f 6e | 76 65 6e 74 69 6f 6e 61 |D: A con|ventiona|
|00004d10| 6c 20 33 44 20 6d 61 74 | 72 69 78 20 6f 62 6a 65 |l 3D mat|rix obje|
|00004d20| 63 74 20 74 68 61 74 20 | 63 61 6e 20 74 72 61 6e |ct that |can tran|
|00004d30| 73 66 6f 72 6d 20 73 65 | 74 73 20 6f 66 84 01 2f |sform se|ts of../|
|00004d40| 2f 20 33 44 20 70 6f 69 | 6e 74 73 20 61 6e 64 20 |/ 3D poi|nts and |
|00004d50| 70 65 72 66 6f 72 6d 20 | 61 20 76 61 72 69 65 74 |perform |a variet|
|00004d60| 79 20 6f 66 20 6d 61 6e | 69 70 75 6c 61 74 69 6f |y of man|ipulatio|
|00004d70| 6e 73 20 6f 6e 20 74 68 | 65 20 74 72 61 6e 73 66 |ns on th|e transf|
|00004d80| 6f 72 6d 38 2f 2f 20 5b | 20 74 72 61 6e 73 6c 61 |orm8// [| transla|
|00004d90| 74 65 64 20 66 72 6f 6d | 20 53 75 6e 20 4a 61 76 |ted from| Sun Jav|
|00004da0| 61 20 61 70 70 6c 65 74 | 20 64 65 6d 6f 20 73 65 |a applet| demo se|
|00004db0| 74 20 20 20 20 20 20 20 | 20 20 20 5d 38 2f 2f 20 |t | ]8// |
|00004dc0| 5b 20 62 79 20 54 6f 6d | 20 50 6f 6c 6c 61 72 64 |[ by Tom| Pollard|
|00004dd0| 20 3c 70 6f 6c 6c 61 72 | 64 40 73 63 68 72 6f 64 | <pollar|d@schrod|
|00004de0| 69 6e 67 65 72 2e 63 6f | 6d 3e 20 4a 61 6e 20 31 |inger.co|m> Jan 1|
|00004df0| 39 39 39 20 5d 00 0f 64 | 69 6d 20 73 20 61 73 20 |999 ]..d|im s as |
|00004e00| 53 74 72 69 6e 67 00 91 | 01 73 20 3d 20 22 4d 61 |String..|.s = "Ma|
|00004e10| 74 72 69 78 33 44 3a 20 | 41 20 63 6f 6e 76 65 6e |trix3D: |A conven|
|00004e20| 74 69 6f 6e 61 6c 20 33 | 44 20 6d 61 74 72 69 78 |tional 3|D matrix|
|00004e30| 20 6f 62 6a 65 63 74 20 | 74 68 61 74 20 63 61 6e | object |that can|
|00004e40| 20 74 72 61 6e 73 66 6f | 72 6d 20 73 65 74 73 22 | transfo|rm sets"|
|00004e50| 20 2b 20 43 68 72 28 31 | 33 29 8e 01 73 20 3d 20 | + Chr(1|3)..s = |
|00004e60| 73 20 2b 20 22 6f 66 20 | 33 44 20 70 6f 69 6e 74 |s + "of |3D point|
|00004e70| 73 20 61 6e 64 20 70 65 | 72 66 6f 72 6d 20 61 20 |s and pe|rform a |
|00004e80| 76 61 72 69 65 74 79 20 | 6f 66 20 6d 61 6e 69 70 |variety |of manip|
|00004e90| 75 6c 61 74 69 6f 6e 73 | 20 6f 6e 20 74 68 65 20 |ulations| on the |
|00004ea0| 74 72 61 6e 73 66 6f 72 | 6d 22 00 08 72 65 74 75 |transfor|m"..retu|
|00004eb0| 72 6e 20 73 00 0c 45 6e | 64 20 46 75 6e 63 74 69 |rn s..En|d Functi|
|00004ec0| 6f 6e 05 53 63 61 6c 65 | 0b 66 20 61 73 20 64 6f |on.Scale|.f as do|
|00004ed0| 75 62 6c 65 00 00 01 1f | 01 1f 12 16 53 75 62 20 |uble....|....Sub |
|00004ee0| 53 63 61 6c 65 28 66 20 | 61 73 20 64 6f 75 62 6c |Scale(f |as doubl|
|00004ef0| 65 29 1f 2f 2f 20 53 63 | 61 6c 65 20 62 79 20 66 |e).// Sc|ale by f|
|00004f00| 20 69 6e 20 61 6c 6c 20 | 64 69 6d 65 6e 73 69 6f | in all |dimensio|
|00004f10| 6e 73 0b 78 78 20 3d 20 | 78 78 20 2a 20 66 0b 78 |ns.xx = |xx * f.x|
|00004f20| 79 20 3d 20 78 79 20 2a | 20 66 0b 78 7a 20 3d 20 |y = xy *| f.xz = |
|00004f30| 78 7a 20 2a 20 66 0b 78 | 6f 20 3d 20 78 6f 20 2a |xz * f.x|o = xo *|
|00004f40| 20 66 00 0b 79 78 20 3d | 20 79 78 20 2a 20 66 0b | f..yx =| yx * f.|
|00004f50| 79 79 20 3d 20 79 79 20 | 2a 20 66 0b 79 7a 20 3d |yy = yy |* f.yz =|
|00004f60| 20 79 7a 20 2a 20 66 0b | 79 6f 20 3d 20 79 6f 20 | yz * f.|yo = yo |
|00004f70| 2a 20 66 00 0b 7a 78 20 | 3d 20 7a 78 20 2a 20 66 |* f..zx |= zx * f|
|00004f80| 0b 7a 79 20 3d 20 7a 79 | 20 2a 20 66 0b 7a 7a 20 |.zy = zy| * f.zz |
|00004f90| 3d 20 7a 7a 20 2a 20 66 | 0b 7a 6f 20 3d 20 7a 6f |= zz * f|.zo = zo|
|00004fa0| 20 2a 20 66 00 07 45 6e | 64 20 53 75 62 05 53 63 | * f..En|d Sub.Sc|
|00004fb0| 61 6c 65 28 78 66 20 61 | 73 20 64 6f 75 62 6c 65 |ale(xf a|s double|
|00004fc0| 2c 20 79 66 20 61 73 20 | 64 6f 75 62 6c 65 2c 20 |, yf as |double, |
|00004fd0| 7a 66 20 61 73 20 64 6f | 75 62 6c 65 00 00 03 00 |zf as do|uble....|
|00004fe0| 03 00 13 33 53 75 62 20 | 53 63 61 6c 65 28 78 66 |...3Sub |Scale(xf|
|00004ff0| 20 61 73 20 64 6f 75 62 | 6c 65 2c 20 79 66 20 61 | as doub|le, yf a|
|00005000| 73 20 64 6f 75 62 6c 65 | 2c 20 7a 66 20 61 73 20 |s double|, zf as |
|00005010| 64 6f 75 62 6c 65 29 26 | 2f 2f 20 53 63 61 6c 65 |double)&|// Scale|
|00005020| 20 61 6c 6f 6e 67 20 65 | 61 63 68 20 61 78 69 73 | along e|ach axis|
|00005030| 20 69 6e 64 65 70 65 6e | 64 65 6e 74 6c 79 00 0c | indepen|dently..|
|00005040| 78 78 20 3d 20 78 78 20 | 2a 20 78 66 0c 78 79 20 |xx = xx |* xf.xy |
|00005050| 3d 20 78 79 20 2a 20 78 | 66 0c 78 7a 20 3d 20 78 |= xy * x|f.xz = x|
|00005060| 7a 20 2a 20 78 66 0c 78 | 6f 20 3d 20 78 6f 20 2a |z * xf.x|o = xo *|
|00005070| 20 78 66 00 0c 79 78 20 | 3d 20 79 78 20 2a 20 79 | xf..yx |= yx * y|
|00005080| 66 0c 79 79 20 3d 20 79 | 79 20 2a 20 79 66 0c 79 |f.yy = y|y * yf.y|
|00005090| 7a 20 3d 20 79 7a 20 2a | 20 79 66 0c 79 6f 20 3d |z = yz *| yf.yo =|
|000050a0| 20 79 6f 20 2a 20 79 66 | 00 0c 7a 78 20 3d 20 7a | yo * yf|..zx = z|
|000050b0| 78 20 2a 20 7a 66 0c 7a | 79 20 3d 20 7a 79 20 2a |x * zf.z|y = zy *|
|000050c0| 20 7a 66 0c 7a 7a 20 3d | 20 7a 7a 20 2a 20 7a 66 | zf.zz =| zz * zf|
|000050d0| 0c 7a 6f 20 3d 20 7a 6f | 20 2a 20 7a 66 00 07 45 |.zo = zo| * zf..E|
|000050e0| 6e 64 20 53 75 62 09 54 | 72 61 6e 73 6c 61 74 65 |nd Sub.T|ranslate|
|000050f0| 28 78 74 20 61 73 20 64 | 6f 75 62 6c 65 2c 20 79 |(xt as d|ouble, y|
|00005100| 74 20 61 73 20 64 6f 75 | 62 6c 65 2c 20 7a 74 20 |t as dou|ble, zt |
|00005110| 61 73 20 64 6f 75 62 6c | 65 00 00 02 00 02 00 08 |as doubl|e.......|
|00005120| 37 53 75 62 20 54 72 61 | 6e 73 6c 61 74 65 28 78 |7Sub Tra|nslate(x|
|00005130| 74 20 61 73 20 64 6f 75 | 62 6c 65 2c 20 79 74 20 |t as dou|ble, yt |
|00005140| 61 73 20 64 6f 75 62 6c | 65 2c 20 7a 74 20 61 73 |as doubl|e, zt as|
|00005150| 20 64 6f 75 62 6c 65 29 | 17 2f 2f 20 54 72 61 6e | double)|.// Tran|
|00005160| 73 6c 61 74 65 20 74 68 | 65 20 6f 72 69 67 69 6e |slate th|e origin|
|00005170| 00 0c 78 6f 20 3d 20 78 | 6f 20 2b 20 78 74 0c 79 |..xo = x|o + xt.y|
|00005180| 6f 20 3d 20 79 6f 20 2b | 20 79 74 0c 7a 6f 20 3d |o = yo +| yt.zo =|
|00005190| 20 7a 6f 20 2b 20 7a 74 | 00 07 45 6e 64 20 53 75 | zo + zt|..End Su|
|000051a0| 62 04 59 52 6f 74 0f 74 | 68 65 74 61 20 61 73 20 |b.YRot.t|heta as |
|000051b0| 64 6f 75 62 6c 65 00 00 | 07 0b 07 0b 1e 19 53 75 |double..|......Su|
|000051c0| 62 20 59 52 6f 74 28 74 | 68 65 74 61 20 61 73 20 |b YRot(t|heta as |
|000051d0| 64 6f 75 62 6c 65 29 27 | 2f 2f 72 6f 74 61 74 65 |double)'|//rotate|
|000051e0| 20 74 68 65 74 61 20 64 | 65 67 72 65 65 73 20 61 | theta d|egrees a|
|000051f0| 62 6f 75 74 20 74 68 65 | 20 79 20 61 78 69 73 18 |bout the| y axis.|
|00005200| 64 69 6d 20 74 68 2c 20 | 63 74 2c 20 73 74 20 61 |dim th, |ct, st a|
|00005210| 73 20 64 6f 75 62 6c 65 | 88 01 64 69 6d 20 4e 78 |s double|..dim Nx|
|00005220| 6f 2c 20 4e 78 78 2c 20 | 4e 78 79 2c 20 4e 78 7a |o, Nxx, |Nxy, Nxz|
|00005230| 2c 20 4e 79 6f 2c 20 4e | 79 78 2c 20 4e 79 79 2c |, Nyo, N|yx, Nyy,|
|00005240| 20 4e 79 7a 2c 20 4e 7a | 6f 2c 20 4e 7a 78 2c 20 | Nyz, Nz|o, Nzx, |
|00005250| 4e 7a 79 2c 20 4e 7a 7a | 20 61 73 20 64 6f 75 62 |Nzy, Nzz| as doub|
|00005260| 6c 65 00 14 74 68 20 3d | 20 74 68 65 74 61 20 2a |le..th =| theta *|
|00005270| 20 44 65 67 72 65 65 73 | 0c 63 74 20 3d 20 43 6f | Degrees|.ct = Co|
|00005280| 73 28 74 68 29 0c 73 74 | 20 3d 20 53 69 6e 28 74 |s(th).st| = Sin(t|
|00005290| 68 29 00 17 4e 78 78 20 | 3d 20 78 78 20 2a 20 63 |h)..Nxx |= xx * c|
|000052a0| 74 20 2b 20 7a 78 20 2a | 20 73 74 17 4e 78 79 20 |t + zx *| st.Nxy |
|000052b0| 3d 20 78 79 20 2a 20 63 | 74 20 2b 20 7a 79 20 2a |= xy * c|t + zy *|
|000052c0| 20 73 74 17 4e 78 7a 20 | 3d 20 78 7a 20 2a 20 63 | st.Nxz |= xz * c|
|000052d0| 74 20 2b 20 7a 7a 20 2a | 20 73 74 17 4e 78 6f 20 |t + zz *| st.Nxo |
|000052e0| 3d 20 78 6f 20 2a 20 63 | 74 20 2b 20 7a 6f 20 2a |= xo * c|t + zo *|
|000052f0| 20 73 74 00 17 4e 7a 78 | 20 3d 20 7a 78 20 2a 20 | st..Nzx| = zx * |
|00005300| 63 74 20 2d 20 78 78 20 | 2a 20 73 74 17 4e 7a 79 |ct - xx |* st.Nzy|
|00005310| 20 3d 20 7a 79 20 2a 20 | 63 74 20 2d 20 78 79 20 | = zy * |ct - xy |
|00005320| 2a 20 73 74 17 4e 7a 7a | 20 3d 20 7a 7a 20 2a 20 |* st.Nzz| = zz * |
|00005330| 63 74 20 2d 20 78 7a 20 | 2a 20 73 74 17 4e 7a 6f |ct - xz |* st.Nzo|
|00005340| 20 3d 20 7a 6f 20 2a 20 | 63 74 20 2d 20 78 6f 20 | = zo * |ct - xo |
|00005350| 2a 20 73 74 00 08 78 6f | 20 3d 20 4e 78 6f 08 78 |* st..xo| = Nxo.x|
|00005360| 78 20 3d 20 4e 78 78 08 | 78 79 20 3d 20 4e 78 79 |x = Nxx.|xy = Nxy|
|00005370| 08 78 7a 20 3d 20 4e 78 | 7a 00 08 7a 6f 20 3d 20 |.xz = Nx|z..zo = |
|00005380| 4e 7a 6f 08 7a 78 20 3d | 20 4e 7a 78 08 7a 79 20 |Nzo.zx =| Nzx.zy |
|00005390| 3d 20 4e 7a 79 08 7a 7a | 20 3d 20 4e 7a 7a 00 07 |= Nzy.zz| = Nzz..|
|000053a0| 45 6e 64 20 53 75 62 04 | 58 52 6f 74 0f 74 68 65 |End Sub.|XRot.the|
|000053b0| 74 61 20 61 73 20 64 6f | 75 62 6c 65 00 00 08 00 |ta as do|uble....|
|000053c0| 08 00 1e 19 53 75 62 20 | 58 52 6f 74 28 74 68 65 |....Sub |XRot(the|
|000053d0| 74 61 20 61 73 20 64 6f | 75 62 6c 65 29 27 2f 2f |ta as do|uble)'//|
|000053e0| 72 6f 74 61 74 65 20 74 | 68 65 74 61 20 64 65 67 |rotate t|heta deg|
|000053f0| 72 65 65 73 20 61 62 6f | 75 74 20 74 68 65 20 78 |rees abo|ut the x|
|00005400| 20 61 78 69 73 18 64 69 | 6d 20 74 68 2c 20 63 74 | axis.di|m th, ct|
|00005410| 2c 20 73 74 20 61 73 20 | 64 6f 75 62 6c 65 88 01 |, st as |double..|
|00005420| 64 69 6d 20 4e 78 6f 2c | 20 4e 78 78 2c 20 4e 78 |dim Nxo,| Nxx, Nx|
|00005430| 79 2c 20 4e 78 7a 2c 20 | 4e 79 6f 2c 20 4e 79 78 |y, Nxz, |Nyo, Nyx|
|00005440| 2c 20 4e 79 79 2c 20 4e | 79 7a 2c 20 4e 7a 6f 2c |, Nyy, N|yz, Nzo,|
|00005450| 20 4e 7a 78 2c 20 4e 7a | 79 2c 20 4e 7a 7a 20 61 | Nzx, Nz|y, Nzz a|
|00005460| 73 20 64 6f 75 62 6c 65 | 00 14 74 68 20 3d 20 74 |s double|..th = t|
|00005470| 68 65 74 61 20 2a 20 44 | 65 67 72 65 65 73 0c 63 |heta * D|egrees.c|
|00005480| 74 20 3d 20 43 6f 73 28 | 74 68 29 0c 73 74 20 3d |t = Cos(|th).st =|
|00005490| 20 53 69 6e 28 74 68 29 | 00 17 4e 79 78 20 3d 20 | Sin(th)|..Nyx = |
|000054a0| 79 78 20 2a 20 63 74 20 | 2b 20 7a 78 20 2a 20 73 |yx * ct |+ zx * s|
|000054b0| 74 17 4e 79 79 20 3d 20 | 79 79 20 2a 20 63 74 20 |t.Nyy = |yy * ct |
|000054c0| 2b 20 7a 79 20 2a 20 73 | 74 17 4e 79 7a 20 3d 20 |+ zy * s|t.Nyz = |
|000054d0| 79 7a 20 2a 20 63 74 20 | 2b 20 7a 7a 20 2a 20 73 |yz * ct |+ zz * s|
|000054e0| 74 17 4e 79 6f 20 3d 20 | 79 6f 20 2a 20 63 74 20 |t.Nyo = |yo * ct |
|000054f0| 2b 20 7a 6f 20 2a 20 73 | 74 00 17 4e 7a 78 20 3d |+ zo * s|t..Nzx =|
|00005500| 20 7a 78 20 2a 20 63 74 | 20 2d 20 79 78 20 2a 20 | zx * ct| - yx * |
|00005510| 73 74 17 4e 7a 79 20 3d | 20 7a 79 20 2a 20 63 74 |st.Nzy =| zy * ct|
|00005520| 20 2d 20 79 79 20 2a 20 | 73 74 17 4e 7a 7a 20 3d | - yy * |st.Nzz =|
|00005530| 20 7a 7a 20 2a 20 63 74 | 20 2d 20 79 7a 20 2a 20 | zz * ct| - yz * |
|00005540| 73 74 17 4e 7a 6f 20 3d | 20 7a 6f 20 2a 20 63 74 |st.Nzo =| zo * ct|
|00005550| 20 2d 20 79 6f 20 2a 20 | 73 74 00 08 79 6f 20 3d | - yo * |st..yo =|
|00005560| 20 4e 79 6f 08 79 78 20 | 3d 20 4e 79 78 08 79 79 | Nyo.yx |= Nyx.yy|
|00005570| 20 3d 20 4e 79 79 08 79 | 7a 20 3d 20 4e 79 7a 00 | = Nyy.y|z = Nyz.|
|00005580| 08 7a 6f 20 3d 20 4e 7a | 6f 08 7a 78 20 3d 20 4e |.zo = Nz|o.zx = N|
|00005590| 7a 78 08 7a 79 20 3d 20 | 4e 7a 79 08 7a 7a 20 3d |zx.zy = |Nzy.zz =|
|000055a0| 20 4e 7a 7a 00 07 45 6e | 64 20 53 75 62 04 5a 52 | Nzz..En|d Sub.ZR|
|000055b0| 6f 74 0f 74 68 65 74 61 | 20 61 73 20 64 6f 75 62 |ot.theta| as doub|
|000055c0| 6c 65 00 00 05 0a 05 0a | 1e 19 53 75 62 20 5a 52 |le......|..Sub ZR|
|000055d0| 6f 74 28 74 68 65 74 61 | 20 61 73 20 64 6f 75 62 |ot(theta| as doub|
|000055e0| 6c 65 29 27 2f 2f 72 6f | 74 61 74 65 20 74 68 65 |le)'//ro|tate the|
|000055f0| 74 61 20 64 65 67 72 65 | 65 73 20 61 62 6f 75 74 |ta degre|es about|
|00005600| 20 74 68 65 20 7a 20 61 | 78 69 73 18 64 69 6d 20 | the z a|xis.dim |
|00005610| 74 68 2c 20 63 74 2c 20 | 73 74 20 61 73 20 64 6f |th, ct, |st as do|
|00005620| 75 62 6c 65 88 01 64 69 | 6d 20 4e 78 6f 2c 20 4e |uble..di|m Nxo, N|
|00005630| 78 78 2c 20 4e 78 79 2c | 20 4e 78 7a 2c 20 4e 79 |xx, Nxy,| Nxz, Ny|
|00005640| 6f 2c 20 4e 79 78 2c 20 | 4e 79 79 2c 20 4e 79 7a |o, Nyx, |Nyy, Nyz|
|00005650| 2c 20 4e 7a 6f 2c 20 4e | 7a 78 2c 20 4e 7a 79 2c |, Nzo, N|zx, Nzy,|
|00005660| 20 4e 7a 7a 20 61 73 20 | 64 6f 75 62 6c 65 00 14 | Nzz as |double..|
|00005670| 74 68 20 3d 20 74 68 65 | 74 61 20 2a 20 44 65 67 |th = the|ta * Deg|
|00005680| 72 65 65 73 0c 63 74 20 | 3d 20 43 6f 73 28 74 68 |rees.ct |= Cos(th|
|00005690| 29 0c 73 74 20 3d 20 53 | 69 6e 28 74 68 29 00 17 |).st = S|in(th)..|
|000056a0| 4e 79 78 20 3d 20 79 78 | 20 2a 20 63 74 20 2b 20 |Nyx = yx| * ct + |
|000056b0| 78 78 20 2a 20 73 74 17 | 4e 79 79 20 3d 20 79 79 |xx * st.|Nyy = yy|
|000056c0| 20 2a 20 63 74 20 2b 20 | 78 79 20 2a 20 73 74 17 | * ct + |xy * st.|
|000056d0| 4e 79 7a 20 3d 20 79 7a | 20 2a 20 63 74 20 2b 20 |Nyz = yz| * ct + |
|000056e0| 78 7a 20 2a 20 73 74 17 | 4e 79 6f 20 3d 20 79 6f |xz * st.|Nyo = yo|
|000056f0| 20 2a 20 63 74 20 2b 20 | 78 6f 20 2a 20 73 74 00 | * ct + |xo * st.|
|00005700| 17 4e 78 78 20 3d 20 78 | 78 20 2a 20 63 74 20 2d |.Nxx = x|x * ct -|
|00005710| 20 79 78 20 2a 20 73 74 | 17 4e 78 79 20 3d 20 78 | yx * st|.Nxy = x|
|00005720| 79 20 2a 20 63 74 20 2d | 20 79 79 20 2a 20 73 74 |y * ct -| yy * st|
|00005730| 17 4e 78 7a 20 3d 20 78 | 7a 20 2a 20 63 74 20 2d |.Nxz = x|z * ct -|
|00005740| 20 79 7a 20 2a 20 73 74 | 17 4e 78 6f 20 3d 20 78 | yz * st|.Nxo = x|
|00005750| 6f 20 2a 20 63 74 20 2d | 20 79 6f 20 2a 20 73 74 |o * ct -| yo * st|
|00005760| 00 08 79 6f 20 3d 20 4e | 79 6f 08 79 78 20 3d 20 |..yo = N|yo.yx = |
|00005770| 4e 79 78 08 79 79 20 3d | 20 4e 79 79 08 79 7a 20 |Nyx.yy =| Nyy.yz |
|00005780| 3d 20 4e 79 7a 00 08 78 | 6f 20 3d 20 4e 78 6f 08 |= Nyz..x|o = Nxo.|
|00005790| 78 78 20 3d 20 4e 78 78 | 08 78 79 20 3d 20 4e 78 |xx = Nxx|.xy = Nx|
|000057a0| 79 08 78 7a 20 3d 20 4e | 78 7a 00 07 45 6e 64 20 |y.xz = N|xz..End |
|000057b0| 53 75 62 04 4d 75 6c 74 | 0f 72 68 73 20 61 73 20 |Sub.Mult|.rhs as |
|000057c0| 4d 61 74 72 69 78 33 44 | 00 00 04 00 04 00 23 19 |Matrix3D|......#.|
|000057d0| 53 75 62 20 4d 75 6c 74 | 28 72 68 73 20 61 73 20 |Sub Mult|(rhs as |
|000057e0| 4d 61 74 72 69 78 33 44 | 29 2c 2f 2f 20 4d 75 6c |Matrix3D|),// Mul|
|000057f0| 74 69 70 6c 79 20 74 68 | 69 73 20 6d 61 74 72 69 |tiply th|is matri|
|00005800| 78 20 62 79 20 61 20 73 | 65 63 6f 6e 64 3a 20 4d |x by a s|econd: M|
|00005810| 20 3d 20 4d 2a 52 88 01 | 64 69 6d 20 6c 78 6f 2c | = M*R..|dim lxo,|
|00005820| 20 6c 78 78 2c 20 6c 78 | 79 2c 20 6c 78 7a 2c 20 | lxx, lx|y, lxz, |
|00005830| 6c 79 6f 2c 20 6c 79 78 | 2c 20 6c 79 79 2c 20 6c |lyo, lyx|, lyy, l|
|00005840| 79 7a 2c 20 6c 7a 6f 2c | 20 6c 7a 78 2c 20 6c 7a |yz, lzo,| lzx, lz|
|00005850| 79 2c 20 6c 7a 7a 20 61 | 73 20 64 6f 75 62 6c 65 |y, lzz a|s double|
|00005860| 00 2d 6c 78 78 20 3d 20 | 78 78 20 2a 20 72 68 73 |.-lxx = |xx * rhs|
|00005870| 2e 78 78 20 2b 20 79 78 | 20 2a 20 72 68 73 2e 78 |.xx + yx| * rhs.x|
|00005880| 79 20 2b 20 7a 78 20 2a | 20 72 68 73 2e 78 7a 2d |y + zx *| rhs.xz-|
|00005890| 6c 78 79 20 3d 20 78 79 | 20 2a 20 72 68 73 2e 78 |lxy = xy| * rhs.x|
|000058a0| 78 20 2b 20 79 79 20 2a | 20 72 68 73 2e 78 79 20 |x + yy *| rhs.xy |
|000058b0| 2b 20 7a 79 20 2a 20 72 | 68 73 2e 78 7a 2d 6c 78 |+ zy * r|hs.xz-lx|
|000058c0| 7a 20 3d 20 78 7a 20 2a | 20 72 68 73 2e 78 78 20 |z = xz *| rhs.xx |
|000058d0| 2b 20 79 7a 20 2a 20 72 | 68 73 2e 78 79 20 2b 20 |+ yz * r|hs.xy + |
|000058e0| 7a 7a 20 2a 20 72 68 73 | 2e 78 7a 36 6c 78 6f 20 |zz * rhs|.xz6lxo |
|000058f0| 3d 20 78 6f 20 2a 20 72 | 68 73 2e 78 78 20 2b 20 |= xo * r|hs.xx + |
|00005900| 79 6f 20 2a 20 72 68 73 | 2e 78 79 20 2b 20 7a 6f |yo * rhs|.xy + zo|
|00005910| 20 2a 20 72 68 73 2e 78 | 7a 20 2b 20 72 68 73 2e | * rhs.x|z + rhs.|
|00005920| 78 6f 00 2d 6c 79 78 20 | 3d 20 78 78 20 2a 20 72 |xo.-lyx |= xx * r|
|00005930| 68 73 2e 79 78 20 2b 20 | 79 78 20 2a 20 72 68 73 |hs.yx + |yx * rhs|
|00005940| 2e 79 79 20 2b 20 7a 78 | 20 2a 20 72 68 73 2e 79 |.yy + zx| * rhs.y|
|00005950| 7a 2d 6c 79 79 20 3d 20 | 78 79 20 2a 20 72 68 73 |z-lyy = |xy * rhs|
|00005960| 2e 79 78 20 2b 20 79 79 | 20 2a 20 72 68 73 2e 79 |.yx + yy| * rhs.y|
|00005970| 79 20 2b 20 7a 79 20 2a | 20 72 68 73 2e 79 7a 2d |y + zy *| rhs.yz-|
|00005980| 6c 79 7a 20 3d 20 78 7a | 20 2a 20 72 68 73 2e 79 |lyz = xz| * rhs.y|
|00005990| 78 20 2b 20 79 7a 20 2a | 20 72 68 73 2e 79 79 20 |x + yz *| rhs.yy |
|000059a0| 2b 20 7a 7a 20 2a 20 72 | 68 73 2e 79 7a 36 6c 79 |+ zz * r|hs.yz6ly|
|000059b0| 6f 20 3d 20 78 6f 20 2a | 20 72 68 73 2e 79 78 20 |o = xo *| rhs.yx |
|000059c0| 2b 20 79 6f 20 2a 20 72 | 68 73 2e 79 79 20 2b 20 |+ yo * r|hs.yy + |
|000059d0| 7a 6f 20 2a 20 72 68 73 | 2e 79 7a 20 2b 20 72 68 |zo * rhs|.yz + rh|
|000059e0| 73 2e 79 6f 00 2d 6c 7a | 78 20 3d 20 78 78 20 2a |s.yo.-lz|x = xx *|
|000059f0| 20 72 68 73 2e 7a 78 20 | 2b 20 79 78 20 2a 20 72 | rhs.zx |+ yx * r|
|00005a00| 68 73 2e 7a 79 20 2b 20 | 7a 78 20 2a 20 72 68 73 |hs.zy + |zx * rhs|
|00005a10| 2e 7a 7a 2d 6c 7a 79 20 | 3d 20 78 79 20 2a 20 72 |.zz-lzy |= xy * r|
|00005a20| 68 73 2e 7a 78 20 2b 20 | 79 79 20 2a 20 72 68 73 |hs.zx + |yy * rhs|
|00005a30| 2e 7a 79 20 2b 20 7a 79 | 20 2a 20 72 68 73 2e 7a |.zy + zy| * rhs.z|
|00005a40| 7a 2d 6c 7a 7a 20 3d 20 | 78 7a 20 2a 20 72 68 73 |z-lzz = |xz * rhs|
|00005a50| 2e 7a 78 20 2b 20 79 7a | 20 2a 20 72 68 73 2e 7a |.zx + yz| * rhs.z|
|00005a60| 79 20 2b 20 7a 7a 20 2a | 20 72 68 73 2e 7a 7a 36 |y + zz *| rhs.zz6|
|00005a70| 6c 7a 6f 20 3d 20 78 6f | 20 2a 20 72 68 73 2e 7a |lzo = xo| * rhs.z|
|00005a80| 78 20 2b 20 79 6f 20 2a | 20 72 68 73 2e 7a 79 20 |x + yo *| rhs.zy |
|00005a90| 2b 20 7a 6f 20 2a 20 72 | 68 73 2e 7a 7a 20 2b 20 |+ zo * r|hs.zz + |
|00005aa0| 72 68 73 2e 7a 6f 00 08 | 78 78 20 3d 20 6c 78 78 |rhs.zo..|xx = lxx|
|00005ab0| 08 78 79 20 3d 20 6c 78 | 79 08 78 7a 20 3d 20 6c |.xy = lx|y.xz = l|
|00005ac0| 78 7a 08 78 6f 20 3d 20 | 6c 78 6f 00 08 79 78 20 |xz.xo = |lxo..yx |
|00005ad0| 3d 20 6c 79 78 08 79 79 | 20 3d 20 6c 79 79 08 79 |= lyx.yy| = lyy.y|
|00005ae0| 7a 20 3d 20 6c 79 7a 08 | 79 6f 20 3d 20 6c 79 6f |z = lyz.|yo = lyo|
|00005af0| 00 08 7a 78 20 3d 20 6c | 7a 78 08 7a 79 20 3d 20 |..zx = l|zx.zy = |
|00005b00| 6c 7a 79 08 7a 7a 20 3d | 20 6c 7a 7a 08 7a 6f 20 |lzy.zz =| lzz.zo |
|00005b10| 3d 20 6c 7a 6f 00 07 45 | 6e 64 20 53 75 62 0c 54 |= lzo..E|nd Sub.T|
|00005b20| 72 61 6e 73 66 6f 72 6d | 58 59 5a a1 01 78 20 61 |ransform|XYZ..x a|
|00005b30| 73 20 64 6f 75 62 6c 65 | 2c 20 79 20 61 73 20 64 |s double|, y as d|
|00005b40| 6f 75 62 6c 65 2c 20 7a | 20 61 73 20 64 6f 75 62 |ouble, z| as doub|
|00005b50| 6c 65 2c 20 42 79 52 65 | 66 20 74 78 20 61 73 20 |le, ByRe|f tx as |
|00005b60| 64 6f 75 62 6c 65 2c 20 | 42 79 52 65 66 20 74 79 |double, |ByRef ty|
|00005b70| 20 61 73 20 64 6f 75 62 | 6c 65 2c 20 42 79 52 65 | as doub|le, ByRe|
|00005b80| 66 20 74 7a 20 61 73 20 | 64 6f 75 62 6c 65 00 00 |f tz as |double..|
|00005b90| 05 00 05 00 07 b3 01 53 | 75 62 20 54 72 61 6e 73 |.......S|ub Trans|
|00005ba0| 66 6f 72 6d 58 59 5a 28 | 78 20 61 73 20 64 6f 75 |formXYZ(|x as dou|
|00005bb0| 62 6c 65 2c 20 79 20 61 | 73 20 64 6f 75 62 6c 65 |ble, y a|s double|
|00005bc0| 2c 20 7a 20 61 73 20 64 | 6f 75 62 6c 65 2c 20 42 |, z as d|ouble, B|
|00005bd0| 79 52 65 66 20 74 78 20 | 61 73 20 64 6f 75 62 6c |yRef tx |as doubl|
|00005be0| 65 2c 20 42 79 52 65 66 | 20 74 79 20 61 73 20 64 |e, ByRef| ty as d|
|00005bf0| 6f 75 62 6c 65 2c 20 42 | 79 52 65 66 20 74 7a 20 |ouble, B|yRef tz |
|00005c00| 61 73 20 64 6f 75 62 6c | 65 29 00 1e 74 78 20 3d |as doubl|e)..tx =|
|00005c10| 20 78 20 2a 20 78 78 20 | 2b 20 79 20 2a 20 79 78 | x * xx |+ y * yx|
|00005c20| 20 2b 20 7a 20 2a 20 7a | 78 20 1d 74 79 20 3d 20 | + z * z|x .ty = |
|00005c30| 78 20 2a 20 78 79 20 2b | 20 79 20 2a 20 79 79 20 |x * xy +| y * yy |
|00005c40| 2b 20 7a 20 2a 20 7a 79 | 1d 74 7a 20 3d 20 78 20 |+ z * zy|.tz = x |
|00005c50| 2a 20 78 7a 20 2b 20 79 | 20 2a 20 79 7a 20 2b 20 |* xz + y| * yz + |
|00005c60| 7a 20 2a 20 7a 7a 00 07 | 45 6e 64 20 53 75 62 00 |z * zz..|End Sub.|
|00005c70| 00 00 00 00 06 41 05 43 | 6c 61 73 73 08 56 69 65 |.....A.C|lass.Vie|
|00005c80| 77 65 72 33 44 23 ae 01 | 8c 0a 9c 07 07 00 08 56 |wer3D#..|.......V|
|00005c90| 69 65 77 65 72 33 44 9c | 03 06 43 61 6e 76 61 73 |iewer3D.|..Canvas|
|00005ca0| 00 19 0f 6f 62 6a 20 61 | 73 20 4f 4f 47 4c 5f 4f |...obj a|s OOGL_O|
|00005cb0| 46 46 00 12 70 61 69 6e | 74 65 64 20 61 73 20 42 |FF..pain|ted as B|
|00005cc0| 6f 6f 6c 65 61 6e 00 11 | 6f 62 6a 6e 61 6d 65 20 |oolean..|objname |
|00005cd0| 61 73 20 53 74 72 69 6e | 67 00 11 6d 65 73 73 61 |as Strin|g..messa|
|00005ce0| 67 65 20 61 73 20 53 74 | 72 69 6e 67 00 10 61 6d |ge as St|ring..am|
|00005cf0| 61 74 20 61 73 20 4d 61 | 74 72 69 78 33 44 00 0e |at as Ma|trix3D..|
|00005d00| 78 66 61 63 20 61 73 20 | 64 6f 75 62 6c 65 00 12 |xfac as |double..|
|00005d10| 73 63 61 6c 65 76 61 6c | 20 61 73 20 64 6f 75 62 |scaleval| as doub|
|00005d20| 6c 65 00 10 74 6d 61 74 | 20 61 73 20 4d 61 74 72 |le..tmat| as Matr|
|00005d30| 69 78 33 44 00 0f 62 67 | 63 20 61 73 20 47 72 61 |ix3D..bg|c as Gra|
|00005d40| 70 68 69 63 73 00 12 62 | 62 75 66 66 65 72 20 61 |phics..b|buffer a|
|00005d50| 73 20 50 69 63 74 75 72 | 65 00 10 70 72 65 76 78 |s Pictur|e..prevx|
|00005d60| 20 61 73 20 69 6e 74 65 | 67 65 72 00 10 70 72 65 | as inte|ger..pre|
|00005d70| 76 79 20 61 73 20 69 6e | 74 65 67 65 72 00 18 6c |vy as in|teger..l|
|00005d80| 61 73 74 47 72 61 70 68 | 69 63 73 20 61 73 20 47 |astGraph|ics as G|
|00005d90| 72 61 70 68 69 63 73 00 | 14 63 6c 69 63 6b 54 79 |raphics.|.clickTy|
|00005da0| 70 65 20 61 73 20 69 6e | 74 65 67 65 72 00 15 6c |pe as in|teger..l|
|00005db0| 61 73 74 43 68 61 6e 67 | 65 20 61 73 20 69 6e 74 |astChang|e as int|
|00005dc0| 65 67 65 72 00 10 78 74 | 68 65 74 61 20 61 73 20 |eger..xt|heta as |
|00005dd0| 64 6f 75 62 6c 65 00 10 | 79 74 68 65 74 61 20 61 |double..|ytheta a|
|00005de0| 73 20 64 6f 75 62 6c 65 | 00 0e 66 61 63 74 20 61 |s double|..fact a|
|00005df0| 73 20 64 6f 75 62 6c 65 | 00 13 70 69 63 6b 4d 6f |s double|..pickMo|
|00005e00| 64 65 20 61 73 20 42 6f | 6f 6c 65 61 6e 00 12 49 |de as Bo|olean..I|
|00005e10| 6e 66 6f 20 61 73 20 49 | 6e 66 6f 57 69 6e 64 6f |nfo as I|nfoWindo|
|00005e20| 77 00 0e 70 61 74 68 20 | 61 73 20 53 74 72 69 6e |w..path |as Strin|
|00005e30| 67 00 0e 6e 61 6d 65 20 | 61 73 20 53 74 72 69 6e |g..name |as Strin|
|00005e40| 67 00 14 70 61 69 6e 74 | 4d 6f 64 65 20 61 73 20 |g..paint|Mode as |
|00005e50| 42 6f 6f 6c 65 61 6e 00 | 10 66 70 69 63 6b 20 61 |Boolean.|.fpick a|
|00005e60| 73 20 69 6e 74 65 67 65 | 72 00 17 74 68 65 4c 69 |s intege|r..theLi|
|00005e70| 67 68 74 20 61 73 20 4c | 69 67 68 74 53 6f 75 72 |ght as L|ightSour|
|00005e80| 63 65 00 0a 0a 49 6e 69 | 74 69 61 6c 69 7a 65 00 |ce...Ini|tialize.|
|00005e90| 00 00 15 00 15 00 1c 10 | 53 75 62 20 49 6e 69 74 |........|Sub Init|
|00005ea0| 69 61 6c 69 7a 65 28 29 | 00 09 6f 62 6a 20 3d 20 |ialize()|..obj = |
|00005eb0| 4e 49 4c 0e 70 61 69 6e | 74 65 64 20 3d 20 54 52 |NIL.pain|ted = TR|
|00005ec0| 55 45 0d 62 62 75 66 66 | 65 72 20 3d 20 4e 49 4c |UE.bbuff|er = NIL|
|00005ed0| 09 62 67 63 20 3d 20 4e | 49 4c 00 0c 6f 62 6a 6e |.bgc = N|IL..objn|
|00005ee0| 61 6d 65 20 3d 20 22 22 | 0c 6d 65 73 73 61 67 65 |ame = ""|.message|
|00005ef0| 20 3d 20 22 22 0e 73 63 | 61 6c 65 76 61 6c 20 3d | = "".sc|aleval =|
|00005f00| 20 30 2e 31 09 70 72 65 | 76 78 20 3d 20 30 09 70 | 0.1.pre|vx = 0.p|
|00005f10| 72 65 76 79 20 3d 20 30 | 00 12 53 65 74 50 69 63 |revy = 0|..SetPic|
|00005f20| 6b 4d 6f 64 65 28 46 41 | 4c 53 45 29 0a 66 70 69 |kMode(FA|LSE).fpi|
|00005f30| 63 6b 20 3d 20 2d 31 00 | 13 61 6d 61 74 20 3d 20 |ck = -1.|.amat = |
|00005f40| 6e 65 77 20 4d 61 74 72 | 69 78 33 44 26 61 6d 61 |new Matr|ix3D&ama|
|00005f50| 74 2e 59 52 6f 74 28 32 | 30 29 20 20 2f 2f 20 73 |t.YRot(2|0) // s|
|00005f60| 65 74 20 69 6e 69 74 69 | 61 6c 20 72 6f 74 61 74 |et initi|al rotat|
|00005f70| 69 6f 6e 0d 61 6d 61 74 | 2e 58 52 6f 74 28 32 30 |ion.amat|.XRot(20|
|00005f80| 29 00 13 74 6d 61 74 20 | 3d 20 6e 65 77 20 4d 61 |)..tmat |= new Ma|
|00005f90| 74 72 69 78 33 44 00 0e | 6c 61 73 74 43 68 61 6e |trix3D..|lastChan|
|00005fa0| 67 65 20 3d 20 31 0d 78 | 74 68 65 74 61 20 3d 20 |ge = 1.x|theta = |
|00005fb0| 31 30 2e 30 0d 79 74 68 | 65 74 61 20 3d 20 31 30 |10.0.yth|eta = 10|
|00005fc0| 2e 30 0a 66 61 63 74 20 | 3d 20 31 2e 30 00 07 45 |.0.fact |= 1.0..E|
|00005fd0| 6e 64 20 53 75 62 07 50 | 61 69 6e 74 4d 65 0d 67 |nd Sub.P|aintMe.g|
|00005fe0| 20 61 73 20 47 72 61 70 | 68 69 63 73 00 00 10 05 | as Grap|hics....|
|00005ff0| 10 05 34 1a 53 75 62 20 | 50 61 69 6e 74 4d 65 28 |..4.Sub |PaintMe(|
|00006000| 67 20 61 73 20 47 72 61 | 70 68 69 63 73 29 18 64 |g as Gra|phics).d|
|00006010| 69 6d 20 74 78 2c 20 74 | 79 2c 20 74 7a 20 61 73 |im tx, t|y, tz as|
|00006020| 20 64 6f 75 62 6c 65 14 | 64 69 6d 20 73 63 61 6c | double.|dim scal|
|00006030| 65 20 61 73 20 69 6e 74 | 65 67 65 72 00 10 69 66 |e as int|eger..if|
|00006040| 20 67 20 3c 3e 20 4e 49 | 4c 20 74 68 65 6e 2b 62 | g <> NI|L then+b|
|00006050| 62 75 66 66 65 72 20 3d | 20 4e 65 77 50 69 63 74 |buffer =| NewPict|
|00006060| 75 72 65 28 67 2e 57 69 | 64 74 68 2c 20 67 2e 48 |ure(g.Wi|dth, g.H|
|00006070| 65 69 67 68 74 2c 20 33 | 32 29 30 62 67 63 20 3d |eight, 3|2)0bgc =|
|00006080| 20 62 62 75 66 66 65 72 | 2e 47 72 61 70 68 69 63 | bbuffer|.Graphic|
|00006090| 73 20 20 20 20 20 2f 2f | 20 63 72 65 61 74 65 20 |s //| create |
|000060a0| 69 6d 61 67 65 20 74 6f | 20 64 6f 2e 20 20 20 20 |image to| do. |
|000060b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000060c0| 20 20 20 20 20 20 20 2f | 2f 20 64 6f 75 62 6c 65 | /|/ double|
|000060d0| 20 62 75 66 66 65 72 69 | 6e 67 00 12 69 66 20 6f | bufferi|ng..if o|
|000060e0| 62 6a 20 3c 3e 20 4e 49 | 4c 20 74 68 65 6e 1d 74 |bj <> NI|L then.t|
|000060f0| 78 20 3d 20 2d 28 6f 62 | 6a 2e 78 6d 69 6e 20 2b |x = -(ob|j.xmin +|
|00006100| 20 6f 62 6a 2e 78 6d 61 | 78 29 2f 32 1d 74 79 20 | obj.xma|x)/2.ty |
|00006110| 3d 20 2d 28 6f 62 6a 2e | 79 6d 69 6e 20 2b 20 6f |= -(obj.|ymin + o|
|00006120| 62 6a 2e 79 6d 61 78 29 | 2f 32 1d 74 7a 20 3d 20 |bj.ymax)|/2.tz = |
|00006130| 2d 28 6f 62 6a 2e 7a 6d | 69 6e 20 2b 20 6f 62 6a |-(obj.zm|in + obj|
|00006140| 2e 7a 6d 61 78 29 2f 32 | 00 0c 6f 62 6a 2e 6d 61 |.zmax)/2|..obj.ma|
|00006150| 74 2e 55 6e 69 74 1d 6f | 62 6a 2e 6d 61 74 2e 54 |t.Unit.o|bj.mat.T|
|00006160| 72 61 6e 73 6c 61 74 65 | 28 74 78 2c 20 74 79 2c |ranslate|(tx, ty,|
|00006170| 20 74 7a 29 12 6f 62 6a | 2e 6d 61 74 2e 4d 75 6c | tz).obj|.mat.Mul|
|00006180| 74 28 61 6d 61 74 29 00 | 1c 73 63 61 6c 65 20 3d |t(amat).|.scale =|
|00006190| 20 78 66 61 63 20 2a 20 | 6d 65 2e 77 69 64 74 68 | xfac * |me.width|
|000061a0| 20 2f 20 32 35 00 2d 6f | 62 6a 2e 6d 61 74 2e 73 | / 25.-o|bj.mat.s|
|000061b0| 63 61 6c 65 28 73 63 61 | 6c 65 2c 20 73 63 61 6c |cale(sca|le, scal|
|000061c0| 65 2c 20 31 36 2a 78 66 | 61 63 2f 6d 65 2e 77 69 |e, 16*xf|ac/me.wi|
|000061d0| 64 74 68 29 2d 6f 62 6a | 2e 6d 61 74 2e 74 72 61 |dth)-obj|.mat.tra|
|000061e0| 6e 73 6c 61 74 65 28 6d | 65 2e 77 69 64 74 68 2f |nslate(m|e.width/|
|000061f0| 32 2c 20 6d 65 2e 68 65 | 69 67 68 74 2f 32 2c 20 |2, me.he|ight/2, |
|00006200| 38 29 17 6f 62 6a 2e 74 | 72 61 6e 73 66 6f 72 6d |8).obj.t|ransform|
|00006210| 65 64 20 3d 20 46 41 4c | 53 45 00 0e 6f 62 6a 2e |ed = FAL|SE..obj.|
|00006220| 72 6f 74 20 3d 20 61 6d | 61 74 00 16 69 66 20 62 |rot = am|at..if b|
|00006230| 62 75 66 66 65 72 20 3c | 3e 20 4e 49 4c 20 74 68 |buffer <|> NIL th|
|00006240| 65 6e 1a 62 67 63 2e 46 | 6f 72 65 43 6f 6c 6f 72 |en.bgc.F|oreColor|
|00006250| 20 3d 20 52 47 42 28 30 | 2c 30 2c 30 29 2e 62 67 | = RGB(0|,0,0).bg|
|00006260| 63 2e 46 69 6c 6c 52 65 | 63 74 28 30 2c 30 2c 62 |c.FillRe|ct(0,0,b|
|00006270| 62 75 66 66 65 72 2e 77 | 69 64 74 68 2c 62 62 75 |buffer.w|idth,bbu|
|00006280| 66 66 65 72 2e 68 65 69 | 67 68 74 29 0e 6f 62 6a |ffer.hei|ght).obj|
|00006290| 2e 50 61 69 6e 74 28 62 | 67 63 29 1b 67 2e 44 72 |.Paint(b|gc).g.Dr|
|000062a0| 61 77 50 69 63 74 75 72 | 65 20 62 62 75 66 66 65 |awPictur|e bbuffe|
|000062b0| 72 2c 20 30 2c 20 30 00 | 04 65 6c 73 65 0c 6f 62 |r, 0, 0.|.else.ob|
|000062c0| 6a 2e 50 61 69 6e 74 28 | 67 29 00 06 65 6e 64 20 |j.Paint(|g)..end |
|000062d0| 69 66 0e 70 61 69 6e 74 | 65 64 20 3d 20 54 52 55 |if.paint|ed = TRU|
|000062e0| 45 00 13 69 66 20 49 6e | 66 6f 20 3c 3e 20 4e 49 |E..if In|fo <> NI|
|000062f0| 4c 20 74 68 65 6e 0b 49 | 6e 66 6f 2e 55 70 64 61 |L then.I|nfo.Upda|
|00006300| 74 65 06 65 6e 64 20 69 | 66 00 1d 65 6c 73 65 69 |te.end i|f..elsei|
|00006310| 66 20 4c 65 6e 42 28 6d | 65 73 73 61 67 65 29 20 |f LenB(m|essage) |
|00006320| 3e 20 30 20 74 68 65 6e | 32 67 2e 44 72 61 77 53 |> 0 then|2g.DrawS|
|00006330| 74 72 69 6e 67 28 22 45 | 72 72 6f 72 20 72 65 61 |tring("E|rror rea|
|00006340| 64 69 6e 67 20 4f 46 46 | 20 66 69 6c 65 22 2c 20 |ding OFF| file", |
|00006350| 33 2c 20 32 30 2c 20 32 | 30 30 29 06 65 6e 64 20 |3, 20, 2|00).end |
|00006360| 69 66 00 06 65 6e 64 20 | 69 66 00 0d 62 62 75 66 |if..end |if..bbuf|
|00006370| 66 65 72 20 3d 20 4e 49 | 4c 09 62 67 63 20 3d 20 |fer = NI|L.bgc = |
|00006380| 4e 49 4c 00 07 45 6e 64 | 20 53 75 62 07 52 65 70 |NIL..End| Sub.Rep|
|00006390| 61 69 6e 74 00 00 00 03 | 00 03 00 07 0d 53 75 62 |aint....|.....Sub|
|000063a0| 20 52 65 70 61 69 6e 74 | 28 29 00 1b 69 66 20 6c | Repaint|()..if l|
|000063b0| 61 73 74 47 72 61 70 68 | 69 63 73 20 3c 3e 20 4e |astGraph|ics <> N|
|000063c0| 49 4c 20 74 68 65 6e 15 | 50 61 69 6e 74 4d 65 28 |IL then.|PaintMe(|
|000063d0| 6c 61 73 74 47 72 61 70 | 68 69 63 73 29 06 65 6e |lastGrap|hics).en|
|000063e0| 64 20 69 66 00 07 45 6e | 64 20 53 75 62 09 53 65 |d if..En|d Sub.Se|
|000063f0| 74 4f 62 6a 65 63 74 0d | 6f 20 61 73 20 4f 4f 47 |tObject.|o as OOG|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.